En este post aprenderemos como hablar con una instancia de redis con java. Asume, por ende, que ya tenemos instalados java (en alguna de sus versiones soportadas y mantenidas) y por supuesto que redis.

Lo primero que necesitaremos es un cliente que se conecte a redis. En este caso el oficial y mas común es Jedis, para utilizarlo pueden hacerlo de la forma difícil descargando el jar (Jedis.jar) e incluirlo en el classpath a la hora de ejecutar el proyecto. O si son como yo incluirlo dentro de sus dependencias de maven para que este presto a usarse cuando maven construya su proyecto.

La dependencia de maven se configura así:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

O si lo prefieren, podemos usar grails:

compile 'redis.clients:jedis:2.9.0'

O Groovy Grapes

@Grapes( 
   @Grab(group='redis.clients', module='jedis', version='2.9.0') 
)

Lo que a usted le quede 🙂

Una vez configuradas nuestras dependencias, es fácil comenzar a utilizarlas de inmediato.

Para ejemplificar de manera rápida como conectarse a redis con este driver, veamos la siguiente clase de ejemplo:

package com.ricardogeek.redis;

import redis.clients.jedis.Jedis; 

public class RedisJava { 
   public static void main(String[] args) { 
      Jedis jedis = new Jedis("localhost", 10840);
      jedis.auth("UnPasswordSuperDificil"); 
      System.out.println("ping!: " + jedis.ping()); 
   } 
}

En el ejemplo vemos que pasamos “localhost” como nuestro servidor de redis para iniciar la conexión, aquí podemos pasar lo que sea que necesitemos siempre y cuando sea una dirección valida, de lo contrario obtendremos una excepción del tipo InvalidURIException. Luego de crear nuestra instancia, es necesario que nos autentiquemos en este nodo de redis, para eso existe el metodo redis.auth el cual acepta la contraseña configurada al instalar nuestra instancia de redis, recuerden que es muy peligroso no ponerle contraseña a nuestras instancias de redis y mas si son accesibles al publico. 

Si al final de todo esto no hay ningún problema jedis.ping(); deberá devolvernos el string pong. Y entonces estamos listos para comenzar a trabajar con nuestra instancia de redis!

Recuerden que los comandos que ofrece jedis, son los mismos que operamos en la terminal solo que en la forma de metodos de la clase Jedis. Veamos algunos ejemplos:

jedis.set("nosql", "ravenDB");
jedis.get("nosql"); //ravenDB

//convertimos una llave a lista
jedis.lpush("nosql", "Redis"); 
jedis.lpush("nosql", "Mongodb"); 
jedis.lpush("nosql", "Mysql"); 

//obtenemos los valores de la lista
List<String> list = jedis.lrange("nosql", 0 ,3); 

//obtenemos todas las llaves almacenadas
List<String> list = jedis.keys("*");

De este modo podemos comenzar a construir nuestras aplicaciones utilizando las poderosas características que redis nos ofrece.

Fácil… Rápido… Y sin ensuciarse

Categorized in:

Tagged in:

,