Lo cual hace que responda de manera muy rápida ya que los datos están memoria, el uso que por lo regular se le da es almacenar cache.
Para su instalación debemos de bajar el código fuente desde http://memcached.org/
Instalar librería libevent
yum install libevent libevent-devel
Procedemos a descomprimir y compilar memcached
tar -xzf memcached-1.4.15.tar.gz
./configure
make
make install
A continuación procederemos a crear un script de auto inicio que tendrá dos 2 demonios corriendo con 128 en ram cada uno
########/etc/init.d/memcached
. /etc/init.d/functions
start(){
echo -n $"Iniciando memcached ..."
daemon /usr/local/bin/memcached -d -p 11211 -u memcached -m 128 -c 1024
daemon /usr/local/bin/memcached -d -p 11212 -u memcached -m 128 -c 1024
RETVAL=$?
echo
[ $RETVAL -eq 0 ]
}
stop () {
echo -n $"Parando memcached: "
killproc memcached
RETVAL=$?
echo
[ $RETVAL -eq 0 ]
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
# status -p ${pidfile} memcached
status memcached
RETVAL=$?
;;
restart|reload|force-reload)
restart
;;
condrestart|try-restart)
[ -f ${lockfile} ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart}"
RETVAL=2
;;
esac
exit $RETVAL
########
Pueden especificar con la opción -l la ip en la cual estará nuestro servicio escuchando
Pero al tratar de iniciar nuestro script saldrá este error
service memcached start
Iniciando memcached .../usr/local/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
/usr/local/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
[FAILED]
Lo único que se tiene que realizar es crear un enlace simbólico
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/
Nuevamente iniciamos el servicio
service memcached start
verificamos que este disponible
ps -ef | grep memcached
Nos mostrara algo parecido
501 27414 1 0 19:39 ? 00:00:00 /usr/local/bin/memcached -d -p 11211 -u memcached -m 128 -c 1024
501 27422 1 0 19:39 ? 00:00:00 /usr/local/bin/memcached -d -p 11212 -u memcached -m 128 -c 1024
Comando para memcached
set
add
get
gets
replace
append
prepend
cas
delete
command [key] [flags] [exptime] [bytes] [noreply]\r\n[value]\r
Definiciones:
[key] : the key of the data stored
[flags] : 32-bit unsigned integer that the server store with the data (provided by the user), and return along the data when the item is retrieved
[exptime] : expiration time in seconds, 0 mean no delay, if exptime is superior to 30 day, Memcached will use it as a UNIX timestamps for expiration
[bytes] : number of bytes in the data block
[cas unique] : unique 64-bit value of an existing entry (retrieved with gets command) to use with cas command
[noreply] : optional parameter that inform the server to not send the reply
Como probar que funciona, en bash
1.- Almacenar un dato
echo -e 'add my_key 0 60 8\r\nQue paso\r' | nc localhost 11211
Muestra la salida:
STORED
2.- Obtener el dato
echo -e 'get my_key \r' | nc localhost 11211
Muestra la salida:
VALUE my_key 0 8
Que paso
END
3.- Eliminar la llave
echo -e 'delete my_key\r' | nc localhost 11211
Muestra la salida:
DELETED
Asi mismo deben de agregar un regla en el firewall que permita almacenar y obetener datos desde otros servidores que tengan, ya sea php, python, java, o cualquier lenguaje de programacion que requiera cache.
Ejemplo de regla en iptables(/etc/sysconfig/iptables):
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11211 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 11212 -j ACCEPT
Que son las que tenemos en nuestro script de inicio
Para php se requiere instalar:
yum install php-pecl-memcache
Para pyhton:
https://pypi.python.org/pypi/python-memcached/
yum install python-memcached
Para drupal:
https://drupal.org/project/memcache
Para wordpress:
http://wordpress.org/plugins/memcached/
Para java:
http://code.google.com/p/javamemcachedclient/
Cabe destacar que este servicio es utilizado por grandes portales como:
- LiveJournal
- Wikipedia
- Flickr
- Bebo
- Typepad
- Yellowbot
- Youtube
- Digg
- WordPress.com
- Craigslist
- Mixi
No hay comentarios:
Publicar un comentario