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.
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) });