Cómo instalar y usar Redis

Redis, desarrollado en 2009, es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes (clave/valor), de código abierto, flexible.

Siguiendo los pasos de otras bases de datos NoSQL, como Cassandra, CouchDB y MongoDB, Redis permite al usuario almacenar grandes cantidades de datos sin los límites de una base de datos relacional. Además, también se ha comparado con memcache y se puede usar, con sus elementos básicos como caché con persistencia.

Preparar la instalación

Antes de instalar redis, hay algunos requisitos previos que deben descargarse para que la instalación sea lo más fácil posible.

Comienza por actualizar todos los paquetes apt-get:

Una vez que el proceso finalice, descarga un compilador con la construcción esencial que nos ayudará a instalar Redis desde la fuente:

Finalmente, necesitamos descargar tcl:

Instalando redis

Con todos los requisitos previos y dependencias descargados al servidor, podemos continuar y comenzar a instalar redis desde la fuente:

Descarga la última versión estable de tarball de Redis.io.

Extraer y cambiar a ese directorio:

Continúa con el comando make:

Ejecuta la prueba de realización recomendada:

Para terminar, ejecuta make install, que instala el programa en todo el sistema.

Una vez que el programa ha sido instalado, Redis viene con un script incorporado que configura a Redis para que se ejecute como un demonio en segundo plano.

Para acceder al script muévete al directorio utils:

Desde allí, ejecuta el script de instalación de Ubuntu/Debian:

A medida que se ejecuta el script, puedes elegir las opciones predeterminadas presionando Enter. Una vez que se completa el script, el servidor redis se ejecutará en segundo plano.

Puedes iniciar y detener redis con estos comandos (el número depende del puerto que configuraste durante la instalación. 6379 es la configuración de puerto predeterminada):

Luego puedes acceder a la base de datos de redis escribiendo el siguiente comando:

Ahora tienes Redis instalado y funcionando. El aviso se verá así:

Para configurar Redis para que se inicie automáticamente en el arranque, ejecuta:

Asegurando redis

De forma predeterminada, el servidor Redis permite conexiones desde cualquier lugar que sea inseguro. El enlace a localhost restringirá el acceso al servidor en sí mismo y es un buen primer paso para proteger tu servidor.

Abre el archivo de configuración de Redis para editarlo:

Localiza esta línea y asegúrate de que no tenga comentarios (elimina el # si existe):

Este es solo un primer paso para proteger tu instancia de Redis.

Operaciones con Redis 

Un comando simple para agregar información a una cadena (el tipo de datos redis más básico) podría tener este aspecto:

En este caso, al comando SET le sigue la clave (users: GeorgeWashington) y luego el valor (la propia cadena)

Los dos puntos en Redis no tienen ninguna relación con sus operaciones. Sin embargo, pueden ser útiles para describir la clave que se debe completar.

Podemos recuperar los detalles de la nueva cadena con el comando “GET”

Rangos:

Al recuperar datos, puedes definir el rango con 2 parámetros: el primer y el último elemento (el primer elemento se considera 0). Si tu parámetro final es -1, se incluirán todos los elementos hasta el final de la lista. Por ejemplo, si una lista contiene los 6 colores del arco iris (organizados con el clásico ROYGBV), podrás ver los siguientes resultados:

Vencimiento:

Si bien Redis es muy útil para almacenar información, también se puede utilizar para caducar los datos sistemáticamente.

El tiempo que debe existir una clave se puede designar en segundos o con una marca de tiempo de Unix (segundos desde el 1/1/1970). Dos comandos útiles que pueden controlar la caducidad son EXPIRE, que establece la cantidad de tiempo que debe existir una clave, y TTL, que muestra el tiempo restante antes de que caduque la clave.

Intentar recuperar la información después de que haya caducado da como resultado “nil”

Incrementando:

Redis también tiene la capacidad de incrementar cadenas en su base de datos en una operación atómica. Si se está produciendo un proceso para incrementar un valor, ningún otro comando puede hacerlo al mismo tiempo y los números permanecerán consistentes en toda la base de datos.

Transacciones:

Redis también tiene la capacidad de realizar transacciones, que deben cumplir con dos principios: 1) Los comandos deben ejecutarse en orden. No serán interrumpidos durante el proceso por otras solicitudes. 2) Las transacciones deben ser procesadas en su totalidad.

Las transacciones se inician con el comando MULTI y luego se ejecutan con el comando EXEC.

Si, por algún motivo, hay un problema con el servidor que interrumpe el proceso, la transacción se cerrará y Redis experimentará un error que impide que se reinicie hasta que se ejecute el comando edis-check-aof y la transacción parcial se deshaga y elimine.

Después de eso, el servidor podrá reiniciar.

Tipos de datos de redis

Redis tiene cinco tipos de datos: Strings, Sets, Sorted Sets, Lists, Hashes

Strings (cadenas)

Las cadenas son el tipo de datos más básico de Redis.

Algunos comandos comunes asociados con cadenas son:

SET: establece un valor a una clave

GET: obtiene un valor de una clave

DEL: borra una clave y su valor

INCR: incrementa atómicamente una tecla

INCRBY: incrementa una clave en unos valores designados

EXPIRE: la cantidad de tiempo que debe existir una clave (indicada en segundos)

Las cadenas se pueden utilizar para almacenar objetos, ordenados por clave.

Por ejemplo:

Sets (conjuntos)

Si deseas combinar cadenas, puedes hacerlo con conjuntos REDIS, una colección de cadenas desordenadas.

Algunos comandos comunes para Sets son:

SADD: Agregar uno o miembros a un conjunto

SMEMBERS: Obtiene todos los miembros establecidos

SINTER: Encuentra la intersección de conjuntos múltiples.

SISMEMBER: comprueba si un valor está en un conjunto

SRANDMEMBER: Obtiene un miembro de conjunto aleatorio

Los conjuntos pueden ser útiles en una variedad de situaciones. Debido a que cada miembro de un conjunto es único, agregar miembros a un conjunto no requiere una operación de “verificar y luego agregar”. En su lugar, el conjunto verificará si el elemento es un duplicado cada vez que se ejecuta un comando SADD.

Los conjuntos pueden ser especialmente útiles, por ejemplo, para verificar direcciones IP únicas que visitan una página, o para extraer elementos al azar con el comando SRANDMEMBER.

Sorted Sets (Conjuntos ordenados)

Los conjuntos ordenados tienen un nombre intuitivo: son una colección de cadenas asociadas con un número y se organizan de forma predeterminada en orden de menor a mayor.

Este tipo de datos funciona bien con rangos y, debido a que se ordenan desde el principio, los valores de adición, eliminación o actualización se pueden hacer rápidamente.

Algunos comandos comunes para los conjuntos ordenados son:

ZADD: Agrega miembros a un conjunto ordenado

ZRANGE: muestra los miembros de un conjunto ordenado ordenados por índice (con el valor predeterminado de menor a mayor)

ZREVRANGE: muestra los miembros de un conjunto ordenado ordenados por índice (de mayor a menor)

ZREM: elimina miembros de un conjunto ordenado

Podemos crear un conjunto ordenado de muestra con los tamaños (en millas cuadradas) de los países más pequeños del mundo.

List (Listas)

Las listas en Redis son una colección de valores ordenados. Esto está en contraste con los conjuntos que no están ordenados. Puedes agregar elementos al principio o al final de una lista (incluso cuando hay más de diez millones de elementos en la lista) con gran velocidad.

Algunos comandos comunes asociados con las listas son:

LPUSH: Agregar un valor al principio de una lista

RPUSH: Agregar un valor al final de una lista

LPOP: obtiene y elimina el primer elemento de una lista

RPOP: obtiene y elimina el último elemento de una lista

LREM: Elimina elementos de una lista

RANGO: Obtiene un rango de elementos de una lista

LTRIM: modifica una lista para dejar solo un rango especificado

Podemos crear una lista de personas asignadas para llevar el almuerzo cada semana:

Si quisiéramos empujar a alguien al frente de la lista, podríamos usar el comando LPUSH:

El comando LRANGE mostraría toda nuestra lista:

Las listas a menudo se pueden usar para crear una línea de tiempo de eventos o mantener una colección de un número limitado de elementos.

Hashes

Los hashes en Redis son una herramienta útil para representar objetos con muchos campos. Están configurados para almacenar una gran cantidad de campos en una pequeña cantidad de espacio. Un hash puede almacenar más de 4 mil millones de pares de valor de campo.

Algunos comandos comunes de Hash son:

HMSET: configura múltiples valores hash

HSET: establece el campo hash con un valor de cadena

HGET: recupera el valor de un campo hash

HMGET: recupera todos los valores para campos hash dados

HGETALL: recupera todos los valores de un hash

Podemos usar un hash para describir un usuario de muestra del sitio.

Si necesitas buscar información específica, HMGET muestra los valores solo para los campos solicitados.

Conclusión

Desde su lanzamiento, Redis ha ganado rápidamente mucha popularidad, y es aprovechado por github, flickr, Disqus y Craigslist. Además, Redis se puede utilizar con la mayoría de los lenguajes de programación.

Esto solo ha sido una descripción general de algunas de las características básicas de redis. Estaremos encantados de responder preguntas específicas en nuestra sección de comentarios.