Conexión de Java a Redis
1.1 Configuración de dependencias
Para interactuar con Redis, se requiere incluir la biblioteca Jedis en el proyecto. Agregar la siguiente dependencia en el archivo pom.xml dentro de la sección de depenedncias:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>
1.2 Establecimiento de conexión
Crear una clase para inicializar la conexión y verificar la comunicación con el servidor Redis:
package com.ejemplo.redis;
import redis.clients.jedis.Jedis;
public class ConexionRedis {
public static void main(String[] args) {
// Inicializar cliente con dirección y puerto
Jedis clienteRedis = new Jedis("localhost", 6379);
// Autenticar si es necesario
clienteRedis.auth("contraseña_segura");
// Probar conexión
System.out.println(clienteRedis.ping());
}
}
La salida "PONG" indica una conexión exitosa.
Operaciones con tipos de datos en Redis
2.1 Cadenas de texto (String)
Las cadenas son el tipo fundamental en Redis, ideales para almacenar pares clave-valor simples, con soporte para datos binarios y hasta 512 MB por valor.
package com.ejemplo.redis;
import redis.clients.jedis.Jedis;
public class EjemploString {
public static void main(String[] args) {
Jedis cliente = new Jedis("localhost", 6379);
cliente.auth("contraseña_segura");
cliente.select(0); // Seleccionar base de datos
// Almacenar valor
cliente.set("clave_usuario", "valor_inicial");
// Recuperar valor
System.out.println(cliente.get("clave_usuario"));
// Establecer con expiración (30 segundos)
cliente.setex("clave_temporal", 30, "datos_temporales");
System.out.println(cliente.ttl("clave_temporal"));
// Actualizar valor
cliente.set("clave_usuario", "valor_actualizado");
System.out.println(cliente.get("clave_usuario"));
// Eliminar clave
System.out.println(cliente.del("clave_usuario"));
}
}
2.2 Hash (Hash)
El tipo Hash es un conjunto de pares campo-valor bajo una clave, adceuado para modelar objetos complejos.
package com.ejemplo.redis;
import redis.clients.jedis.Jedis;
import java.util.Map;
public class EjemploHash {
public static void main(String[] args) {
Jedis cliente = new Jedis("localhost", 6379);
cliente.auth("contraseña_segura");
cliente.select(1);
// Definir campos
cliente.hset("info_persona", "nombre", "Ana");
cliente.hset("info_persona", "edad", "25");
cliente.hset("info_persona", "ocupacion", "Ingeniera");
// Obtener campo específico
System.out.println(cliente.hget("info_persona", "nombre"));
// Eliminar campo
cliente.hdel("info_persona", "edad");
// Obtener todos los campos
Map<String, String> todosCampos = cliente.hgetAll("info_persona");
System.out.println(todosCampos);
// Verificar existencia de campo
System.out.println(cliente.hexists("info_persona", "nombre"));
// Longitud del hash
System.out.println(cliente.hlen("info_persona"));
}
}
2.3 Listas (List)
Las listas en Redis son colecciones ordenadas que permiten inserción por cabeza o cola, implementadas como listas enlazadas.
package com.ejemplo.redis;
import redis.clients.jedis.Jedis;
import java.util.List;
public class EjemploList {
public static void main(String[] args) {
Jedis cliente = new Jedis("localhost", 6379);
cliente.auth("contraseña_segura");
cliente.select(2);
// Insertar elementos al inicio
cliente.lpush("lista_tareas", "estudiar", "ejercicio", "programar");
// Obtener longitud
System.out.println(cliente.llen("lista_tareas"));
// Acceder por índice
System.out.println(cliente.lindex("lista_tareas", 0));
// Recuperar rango
List<String> sublist = cliente.lrange("lista_tareas", 0, 1);
System.out.println(sublist);
}
}
2.4 Conjuntos (Set)
Los conjuntos son colecciones deosrdenadas de cadenas únicas, basadas en tablas hash internas.
package com.ejemplo.redis;
import redis.clients.jedis.Jedis;
import java.util.Set;
public class EjemploSet {
public static void main(String[] args) {
Jedis cliente = new Jedis("localhost", 6379);
cliente.auth("contraseña_segura");
cliente.select(3);
// Agregar elementos al conjunto
cliente.sadd("conjunto_miembros", "miembro1", "miembro2", "miembro3");
// Tamaño del conjunto
System.out.println(cliente.scard("conjunto_miembros"));
// Verificar existencia
System.out.println(cliente.exists("conjunto_miembros"));
// Obtener todos los miembros
Set<String> miembros = cliente.smembers("conjunto_miembros");
System.out.println(miembros);
}
}