Usando Redis en NodeJS

Usar Redis hoy día para hacer Caching de data que usamos constantemente es bien común y Nodejs no se queda atrás con esto. Por eso veremos un uso básico del mismo.

Redis también puede ser usado para implementar el patron Pub/Sub, donde nos suscribimos a ciertos eventos y así mismo ejecutar ciertas acciones en base a nuestra data obtenida.

 

PUB – SUB

Primero tenemos que instalar Redis en nuestro servidor, para instalarlo en Centos 6.5 (Servidor que uso) es cuestión de esto:

yum install redis

 

Una vez instalado a tenemos que iniciar nuestro servidor:

redis-server

 

Todo funcionando bien con nuestro servidor Redis corriendo podemos probar el mismo ejecutando estos comando de prueba:

redis-cli ping

Tambien podemos entrar al CLI que nos brinda Redis Redis-CLI y ejecutar uno de sus comandos

redis-cli

 

Confirmado que todo en Redis esta bien, podemos pasar a trabajar con nodejs.

Instalando redis en nodejs:

npm install redis --save-dev

Tipo de datos

Redis contiene / Soporta una lista reducida de tipos de datos:

String – Valores simples

List – Lista de valores que deben de ser string, no puedes tener una lista dentro de una lista.

Sets – Lista de String a diferencia de que no podras tener valores repetidos.

Hashes – Diccionarios

Instalado es cuestión de crear algún script.

//incluimos redis a nuestro script
var redis = require('redis');

//creamos un cliente
var redisClient = redis.createClient();

redisClient.on('connect', function() {
    console.log('Conectado a Redis Server');
});

Si ejecutamos esto debería de salir esto en la consola.

Conectado a Redis Server

Almacenando algunos datos

//incluimos redis a nuestro script
var redis = require('redis');

//creamos un cliente
var redisClient = redis.createClient();


redisClient.on('connect', function() {
    console.log('Conectado a Redis Server');
});

redisClient.set("key1", "hola mundo1");
redisClient.set("key2", "hola mundo2");
redisClient.set("key3", "hola mundo2");

redisClient.get("key1", function(err, value) {
    // retornara null si la key no existe
    console.log(value);
});

Podemos comprobar si tenemos una Key almacenada en Redis mediante este comando:

redisClient.exists(key, function(err, reply){
    if(err != null){
        //error
    }
});

Podemos almacenar listas anidadas a un identificador (Key)

redisClient.set(["key1", "val1","val2","val3","val4"]);

Tomara el primer elemento del array y lo usara como un identificar y los demás elementos serán los valores.

Para obtener estos valores almacenados lo hacemos de esta manera:

redisClient.lrange(key, 0, -1, function(err, values) {
    console.log(values)
});

Referencia

Redis Project
Redis Types

Redis NodeJS Client
Ejemplo completo