Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Servidor memcached


Memcached es un sistema de almacenamiento de objetos en RAM, es muy utilizado como sistema de cache en servidores web evitando así el acceso a disco ya que los datos están cacheados en ram, sus principales caracteristicas son:

  • Clave/Valor: Máximo 250 carácteres como clave y 1MB como valor.
  • TTL: Tiempo de expiración de la clave, pasado este tiempo la clave es eliminada.
  • Si la RAM asignada a memcached es ocupada los valores mas antiguos serán eliminados de forma automática.
  • NO persistente: Los datos se almacenan en RAM y no se vuelcan nunca a disco.

Para instalarlo es tan sencillo como:

emerge net-misc/memcached

Retocamos la config para indicarle la RAM a utilizar y la IP en la que escuchar:

vi /etc/conf.d/memcached

# memcached config file

MEMCACHED_BINARY="/usr/bin/memcached"

# Specify memory usage in megabytes (do not use letters)
# 64MB is default
MEMUSAGE="500"

# User to run as
MEMCACHED_RUNAS="memcached"

# Specify maximum number of concurrent connections
# 1024 is default
MAXCONN="1024"

# Listen for connections on what address?
# If this is empty, memcached will listen on 0.0.0.0
# be sure you have a firewall in place!
LISTENON="A.B.C.D"

# Listen for connections on what port?
PORT="11211"

# Listen for UDP connecitons on what port? 0 means turn off UDP
UDPPORT="${PORT}"

# PID file location
# '-${PORT}.${CONF}.pid' will be appended to this!
# You do not normally need to change this.
PIDBASE="/var/run/memcached/memcached"

# Other Options
MISC_OPTS=""

 

NOTA: Si el código que consulte memcached va a estar en el mismo equipo que memcached recomiendo bindear memcached a la loopback y utilizar el fichero de socket para conectar de este modo además de ser mas seguro será mas eficiente ;)

MISC_OPTS="-s /var/run/memcached/memcached.sock -a 755"

Si por el contrario va a ser un servidor independiente será necesario asignar reglas de iptables ya que memcached no soporta ningún tipo de autenticación.

 

Arrancamos el servicio y lo añadimos al runlevel:

/etc/init.d/memcached start
rc-update add memcached default

Con este simple script en python podemos comprobar que nuestro memcached funciona correctamente:

emerge dev-python/python-memcached
vi memcached.py
#! /usr/bin/python

import memcache
import time

s = memcache.Client(["A.B.C.D:11211"])

value=0
print "--------------------------------"
while True:
    print "Asignando Valor: " + str(value)
    s.set("AA", value, time=5)
    #time.sleep(6)
    value2 = s.get("AA")
    print "Value: " + str(value2)
    if (value == value2):
        print "++ Values match"
    else:
        print "++ Values DONT MATCH"

    value=value + 1
    print "--------------------------------"
    time.sleep(2)

Si descomentamos la línea time.sleep(6) podremos ver como la key ha caducado cuando la consultamos.


Autor: Kr0m -- 03/07/2014 09:07:24