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

Servidor Redis Gentoo


Instalamos el software:

emerge -av dev-db/redis

 

Para correr el servicio con los permisos mínimos arrancaremos redis con el usuario redis:

mkdir -p /home/redis/bin
mkdir -p /home/redis/conf
mkdir -p /home/redis/db
mkdir -p /home/redis/log
mkdir -p /home/redis/pid
mkdir -p /home/redis/socket
mkdir -p /home/redis/tmp
cd /home/redis/
cp /usr/sbin/redis-server bin/redis

 

Generamos el fichero de configuración:

cat > conf/redis.conf <<- EOF
daemonize yes
pidfile /home/redis/pid/redis.pid
port 6379
unixsocket /home/redis/tmp/redis.sock
timeout 120
loglevel notice
logfile /home/redis/log/redis.log
databases 16
save 86400 1
rdbcompression yes
dbfilename redis.rdb
dir /home/redis/db
slave-serve-stale-data yes
maxclients 999
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
activerehashing yes
EOF


NOTA: El parámetro mas importante en el fichero de configuración es save 86400 1 que indica que si en 86400seg hay al menos un cambio, vuelque a disco la db.

 

Arrancamos el servicio:

touch log/redis.log
cd /home
chown -R redis:redis redis
cd /home/redis
su redis -s /bin/bash
bin/redis conf/redis.conf

 

Accedemos a la consola de redis:

redis-cli
redis 127.0.0.1:6379> info

 

Para comprobar que la base de datos funciona podemos escribir un pequeño script en python:

emerge  -av dev-python/pip
pip install redis

 

vi redis_python.py
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
print("Asignando valor 1234 a la key prueba")
r.set('prueba', '1234')
print("Obteniendo valor de prueba")
res=(r.get('prueba'))
print("Valor obtenido: " + res)

 

Si accedemos de nuevo a la consola de redis y pedimos información nos aparecerá un db nueva:

# Keyspace
db0:keys=1,expires=0,avg_ttl=0

 

Mucho cuidado con Redis ya que no implementa ningún tipo de filtrado, ni a nivel de usuario ni a nivel ip, si nos dejamos el servicio tal cual viene los datos de la db serán totalmente públicos, cualquiera que conecte con un simple telnet al puerto 6379 podrá dumpear la db o incluso insertar, actualizar o eliminar valores, lo mas sensato es filtrar mediante iptables tal que así:

iptables -I INPUT 1 -p tcp --dport 6379 -j DROP
iptables -I INPUT 1 -p tcp --dport 6379 -s IP_PERMITIDA -j ACCEPT

 

Eso es todo por ahora, en posteriores artículos explicaré como montar un slave para conseguir alta disponibilidad.


Autor: Kr0m -- 28/07/2014 17:07:05