example - Java Client para conectar ElasticCache Redis Cache Node
redis cache java (2)
¿Hay alguna forma de conectarse al nodo del clúster Redis Cache proporcionando el punto final del nodo? ¿Qué biblioteca debería usar para esto?
Además, ¿qué API debería usar para almacenar y recuperar contenidos de la memoria caché?
Clase básica de comandos Redis:
import java.util.Set;
import java.util.ArrayList;
import redis.clients.jedis.Jedis;
public class RedisConnection
{
private Jedis jedis;
private String hostNameIp;
public RedisConnection()
{
//Set hostNameIp using properties file/directly(shown below):
this.hostNameIp="HOSTNAME_IP";
this.jedis=new Jedis(hostNameIp);
this.jedis=getConnection(hostNameIp);
}
private Jedis getConnection(String hostNameIp)
{
jedis.connect();
return jedis;
}
public ArrayList<String> getAvailableKeys()
{
Set<String> dataFromRedis=jedis.keys("*");
ArrayList<String> dataFromRedisAsArrayList=new ArrayList<String>(dataFromRedis);
jedis.close();
return dataFromRedisAsArrayList;
}
public String getValueByName(String keyName)
{
String valueOfKey=jedis.get(keyName);
jedis.close();
return valueOfKey;
}
public void flushAvailableKeys()
{
jedis.flushAll();
jedis.close();
}
}
Llamar al método (obtener datos de redis)
RedisConnection redisConnection=new RedisConnection();
ArrayList<String> dataInRedis=redisConnection.getAvailableKeys();
En breve
Depende.
Explicación
Puede conectarse a nodos Redis Cluster sin envío de comandos a otros nodos. Solo debes asegurarte de que accedes a las claves manejadas por el nodo. Si se está conectando a un esclavo, asegúrese de que su conexión esté en modo READONLY
; de lo contrario, el esclavo responderá con MOVED
.
Hay muchos clientes Redis basados en Java:
Nivel bajo
Nivel alto
- Spring Data Redis (usa Jedis, Lettuce y SRP como controladores)
- Redisson
...y muchos más. Puede encontrar una lista más completa de los clientes de Java Redis en http://redis.io/clients#java
¿Qué cliente deberías tomar?
Bueno, esto depende principalmente de tus requisitos. Si necesita "solo un cliente" para conexiones breves, entonces quizás Jedis sea la opción correcta para usted. Si necesita flexibilidad, respuestas asincrónicas y códecs personalizados, entonces la lechuga podría ser su amiga.
Si desea tratar con colecciones de Java, bloqueos y muchos más, eche un vistazo a Spring Data Redis o Redisson.
¿Qué API deberías tomar?
Depende también de tus requisitos. El protocolo Redis podría ser más flexible que el protocolo memcached ya que Redis admite más estructuras de datos.
HTH, Mark