Redis es una base de datos en memoria de tipo clave-valor, escrita en C y con soporte para múltiples lenguajes a través de APIs. Ofrece capacidades de perisstencia de datos y permite que el valor asociado a una clave sea de distintos tipos: cadenas, hashes, listas, conjuntos y conjuntos ordenados (sorted sets).
Entre sus casos de uso habituales se encuentran: la obtención de los N elementos más recientes, la creación de clasificaciones y rankings, el manejo preciso de tiempos de expiración, la implementación de contadores, sistemas en tiempo real, pub/sub para mensajería, colas de mensajes y almacenamiento en caché.
Conexión y selección de base de datos
Para conectarse mediante la interfaz de línea de comandos:
redis-cli -h dirección_ip -p puerto
<p>Por ejemplo, para acceder a la instancia local:</p>
<code>redis-cli -h 127.0.0.1 -p 6379</code>
<h2>Operaciones con claves</h2>
CLAVES *lista todas las claves.SELECCIONAR 0cambia a la base de datos número 0.MOVER mipalabra 1traslada la clave a la base de datos 1 (solo si no existe en destino).VACIAR_BASEelimina todos los datos de la base actual.CLAVE_ALEATORIAdevuelve una clave al azar.TIPO claveindica el tipo de dato almacenado.
Cadenas (Strings)
Almacenamiento de valores simples:
ESTABLECER usuario "ana"
OBTENER usuario
RANGO_OBTENER usuario 0 -1
OBTENER_ESTABLECER usuario "marria"
ESTABLECER_MULTIPLE clave1 "valor1" clave2 "valor2"
OBTENER_MULTIPLE clave1 clave2
ESTABLECER_SI_NO_EXISTE clave "valor"
ESTABLECER_CON_EXPIRACION clave 60 "valor_temporal"
REEMPLAZAR_SUBCADENA clave 3 "nuevo"
INCREMENTAR contador
INCREMENTAR_POR contador 10
DECREMENTAR contador
DECREMENTAR_POR contador 10
AGREGAR texto " sufijo"
LONGITUD texto
Hashes
Colecciones de pares campo-valor:
HASHEABLECER persona nombre "carlos"
HASHOBTENER persona nombre
HASHEABLECER_MULTIPLE persona nombre "carlos" edad 28 nota "prueba"
HASHOBTENER_TODO persona
HASHEXISTE persona nombre
HASHEABLECER_SI_NO_EXISTE persona puntuacion 100
HASHINCREMENTAR persona id 1
HAHSELIMINAR persona nombre
HASHCLAVES persona
HASHVALORES persona
HASHLONGITUD persona
Listas
Secuencias ordenadas de elementos:
INSERTAR_IZQUIERDA tareas "a" "b" "c"
INSERTAR_DERECHA tareas "x" "y" "z"
RANGO tareas 0 -1
POP_IZQUIERDA tareas
POP_DERECHA tareas
LONGITUD tareas
ELIMINAR_ELEMENTO tareas 2 "a"
INDICE tareas 2
ESTABLECER_INDICE tareas 2 "nuevo"
RECORTAR tareas 0 4
INSERTAR_ANTES tareas "a" "elemento"
INSERTAR_DESPUES tareas "a" "elemento"
POP_DERECHA_INSERTAR_IZQUIERDA lista1 lista2
Conjuntos (Sets)
Colecciones no ordenadas de elementos únicos:
AGREGAR_CONJUNTO tecnologías "redis"
MIEMBROS_CONJUNTO tecnologías
ELIMINAR_CONJUNTO tecnologías "mysql"
ES_MIEMBRO_CONJUNTO tecnologías "redis"
CARDINALIDAD_CONJUNTO tecnologías
DIFERENCIA_CONJUNTO set1 set2
INTERSECCIÓN_CONJUNTO set1 set2
UNIÓN_CONJUNTO set1 set2
MIEMBRO_ALEATORIO_CONJUNTO tecnologías
POP_ALEATORIO_CONJUNTO tecnologías
Conjuntos ordenados (Sorted Sets)
Colecciones con puntuación para ordenamiento:
AGREGAR_ORDENADO puntuaciones 1 "uno"
AGREGAR_ORDENADO puntuaciones 2 "dos"
INCREMENTAR_PUNTUACION puntuaciones 1 "uno"
OBTENER_PUNTUACION puntuaciones "dos"
RANGO_ORDENADO puntuaciones 0 -1 CON_PUNTUACIONES
RANGO_POR_PUNTUACION puntuaciones 10 25 CON_PUNTUACIONES
RANGO_POR_PUNTUACION puntuaciones 10 25 CON_PUNTUACIONES LIMITE 1 2
RANGO_INVERSO_POR_PUNTUACION puntuaciones 25 10 CON_PUNTUACIONES
CARDINALIDAD_ORDENADA puntuaciones
CONTEO_POR_PUNTUACION puntuaciones 10 25
ELIMINAR_ORDENADO puntuaciones "uno" "dos"
ELIMINAR_POR_RANGO puntuaciones 0 1
ELIMINAR_POR_PUNTUACION puntuaciones 0 1
RANGO_ELEMENTO puntuaciones "uno"
RANGO_INVERSO_ELEMENTO puntuaciones "dos"
Operaciones de servidor y persistencia
Archivos de persistencia: dump.rdb (snapshots) y appendonly.aof (log de operaciones).
Configuración de RDB:
guardar 900 1
guardar 300 10
guardar 60 10000
Activar y configurar AOF:
appendonly sí
appendfsync cada_segundo
Comandos de gestión:
FONDO_GUARDARguarda los datos de forma asíncrona (genera dump.rdb).ULTIMO_GUARDADOmarca temporal del último guardado exitoso.APAGARguarda y detiene el servidor.FONDO_REESCRIBIR_AOFcompacta el archivo de log AOF.CLIENTE_MATARcierra una conexión de cliente.CLIENTE_LISTAmuestra clientes conectados.CLIENTE_ASIGNAR_NOMBREasigna un nombre al cliente actual.CONFIG_OBTENER puertoobtiene un parámetro de configuración.
Publicación y suscripción
SUSCRIBIR canal_noticias
PUBLICAR canal_noticias "Mensaje de prueba"
CANALES_PUBSUB
NUM_SUSCRIPTORES canal_noticias
CANCELAR_SUSCRIPCION canal_noticias
SUSCRIBIR_PATRON noticia.*
Transacciones
Proporcionan atomicidad e aislamiento. Ejemplo de bloque transaccional:
MULTIPLE
AGREGAR_CONJUNTO usuarios "ana" "luis"
INSERTAR_IZQUIERDA registros "entrada1"
EJECUTAR