Facebook Twitter Google Digg Reddit Email Imprimir
Martes 18 de diciembre de 2018
Santoral:
Sonia
Otros:
Día de la lengua árabe
Semana:
51
Día año:
352/365 (96%)
U.F.:
27565.79
IPC:
0,4
Dolar:
685,13
Euro:
777,58
Bitcoin:
U$ 3370.5520238095
mindicador.cl
Time4VPS.EU - VPS hosting in Europe

Conozca Redis

Una pequeña base de datos en RAM de rápido acceso

Introducción

Redis es un avanzado key-value cache y store, que opera en RAM, lo que permite un rápido acceso a la información, con respaldos periódicos en disco con lo que puede almacenar en forma persistente, aunque su gran limitante es que volumen de datos almacenados dependerá de la RAM disponible. Es OpenSource bajo licencia BSD. Catalogada como una base de datos NoSQL, permite almacenar datos por una llave con algún grado de estructura, entre los que cuentan:

Algunos de los usos más comunes son:

Cuenta con librerías para ser utilizado por múltiples lenguajes, como C, Perl, PHP, Java, Ruby, Python y otros

Su página oficial es www.redis.io/

Instalación

Desde repositorio (yum)

Redis se encuentra disponible desde el repositorio EPEL en su versión 2.4.10 para CentOS 6 y 2.8.19 para CentOS 7, y solo restaría ejecutar como usuario root:

yum install redis

Compilar los fuentes

Instalando desde el código fuente, nos aseguramos de tener una versión más reciente, aunque a futuro deberemos encargarnos manualmente de realizar las actualizaciones y parchados pertinentes.

Deberemos comenzar por descargar los fuentes desde http://download.redis.io/releases/redis-3.0.0.tar.gz, actualmente (Mayo 2015) se dispone de la versión 3.0.0, la que incorpora funcionalidad de cluster. Para su compilación se requiere contar con los paquetes de desarrollo como gcc, make, kernel-devel, glibc, y para efectos de pruebas tcl

Procedemos a desempaquetar los fuentes, por lo pronto no se requiere de permiso "root", y de hecho solo se requiere para la instalación en el sistema, pero perfectamente podemos ejecutar una copia desde un usuario sin privilegios.

tar zxvf redis-3.0.0.tar.gz

Desde el directorio redis-3.0.0 ejecutamos el comando make, en general no debiera dar errores, una vez que terminal la compilación podemos evaluar con comando make test (requiere tcl instalado).

cd redis-3.0.0
make
make test

En éste punte, tenemos los ejecutables en el directorio src con los nombres redis-server para el servidor, redis-cli para un cliente de línea de comandos y redis-benchmark para pruebas de rendimiento.

Los siguientes pasos son requeridos para dejarlo como servicio dentro del sistema y requieren ser ejecutados como root. Primeramente se copian los ejecutables en /usr/local/bin:

make install

El último paso es la creación del script de arranque, para ello se debe ingresar al directorio utils y ejecutar el script install_server.sh, que nos consultará datos básicos para la instalación, lo que nos permite configurar múltiples instancias según el puerto utilizado

cd utils
./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [] /usr/local/bin/redis-server
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Los datos ofrecidos por default son aceptables salvo "Executable", donde debemos especificar el path completo /usr/local/bin/redis-server de nuestro ejecutable.

Configuración básica

Al ejecutar el servidor redis-server, se puede especificar como primer parámetro el archivo de configuración a utilizar, en caso contrario se utilizará /etc/redis.conf. Según la instalación, su configuración puede ser indicada en el script de arranque del servicio. Utilizando la instación con el script install-server, el archivo utilizado será /etc/redis/6379.conf.

...
################################ GENERAL  #####################################

# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
pidfile /var/run/redis_6379.pid

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

# TCP listen() backlog.
#
# In high requests-per-second environments you need an high backlog in order
# to avoid slow clients connections issues. Note that the Linux kernel
# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
# in order to get the desired effect.
tcp-backlog 511

# By default Redis listens for connections from all the network interfaces
# available on the server. It is possible to listen to just one or multiple
# interfaces using the "bind" configuration directive, followed by one or
# more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
...

################################ SNAPSHOTTING  ################################
#
# Save the DB on disk:
#
#   save  
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.
#
#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#
#   Note: you can disable saving completely by commenting out all "save" lines.
#
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#
#   save ""

save 900 1
save 300 10
save 60 10000

...

# The filename where to dump the DB
dbfilename dump.rdb

# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis/6379

...

################################## SECURITY ###################################

# Require clients to issue AUTH  before processing any other
# commands.  This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
# requirepass foobared

...

El archivo anterior a sido recortado con objeto de destacar y comentar las opciones de uso más común:

daemonize
use "yes" para indicar que quiere ejecutar como servidor sin ser atado a un terminal, en caso contrario indique "no" y su terminal quedará tomado por la aplicación desplegando las salidas de log, lo que puede ser de utilidad para depuración.
port
Indica el puerto TCP donde el servicio será atendido
bind
indica la (o las) IP(s) por donde se atenderá el servicio, en el caso se aplicaciones cerradas dentro del servidor se recomienda utilizar 127.0.0.1 con que se evita accesos externos indeseados.
save
Puede ser indicado múltiples veces, especificando criterios para volcar los datos en RAM hacia disco dejarlo permanente (en caso de pérdida de energía), primero se especifica la cantidad de segundos y luego la cantidad de cambios reqeridos para forzar la grabación. Por ejemplo si nuestro servicio no tiene muchos cambios, pero nos interesa tenerlos en disco por fallas eléctricas, podremos definir:
save 300 1
save 60 5
Con ello se graba en disco al producirse 5 cambios en 1 minuto, o 1 cambio en 5 minutos, con lo que nos aseguramos a lo más se perderán los datos de los últimos 5 minutos.
requirepass
especifica una password de acceso al servicio, un único nivel muy básico de seguridad, el que a su vez es muy vulnerable dado que se puede encontrar por "fuerza bruta" dado que podrían validarse del órden de 150.000 claves por segundo.
Escrito por: Luis Hernán de la Barra, 06/05/2015

Generado por Sistema y almacenado en cache

Wyzer
Luis Hernán de la Barra
E-Mail:ldelabar@wyzer.cl
Web:www.wyzer.cl