Redis es un almacén de datos en memoria, de alto rendimiento y de código abierto, utilizado como base de datos, caché y agente de mensajes. Pertenece a la categoría de bases de datos NoSQL, específicamente al tipo de almacén de valores clave.
Características principales de Redis
- Rendimiento extremo: Procesa operaciones de lectura/esrcitura en milisegundos al mantener los datos en la memoria RAM.
- Soporte para estructuras de datos ricas: Maneja tipos como cadenas, listas, conjuntos, conjuntos ordenados y hashes.
- Persistencia de datos: Ofrece mecanismos para salvar el estado en disco.
- Alta disponibilidad: Permite configuraciones de replicación y particionamiento (clúster).
Instalación en sistemas basados en Linux
El procedimiento siguiente compila Redis a partir del código fuente.
Primero, se necesitan las herramientas de compilación. En distribuciones como Debian o Ubuntu:
sudo apt-get update
sudo apt-get install build-essential
A continuación, se descarga y descomprime una versión estable de Redis:
cd /tmp
wget https://download.redis.io/releases/redis-7.0.15.tar.gz
tar xzf redis-7.0.15.tar.gz
cd redis-7.0.15
Se compila el código fuente y se instala los binarios:
make
sudo make install
Por defecto, esto instala los ejecutables en /usr/local/bin.
Configurcaión básica
Se recomienda utilizar un archivo de configuración. Copiar el archivo de ejemplo:
sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/redis.conf
Editar /etc/redis/redis.conf para ajustar parámetros importantes, como el puerto o la dirección de enlace.
Gestión del servicio
Para iniciar el servidor con la configuración personalizada:
redis-server /etc/redis/redis.conf
Para ejecutarlo en segundo plano, modificar en el archivo de configuración:
daemonize yes
Detener el servidor se puede realizar con la orden de apagado segura:
redis-cli shutdown
Conectarse al cliente interactivo:
redis-cli
Operaciones básicas con tipos de datos
Cadenas (Strings)
SET usuario:1000 "Juan Pérez"
GET usuario:1000
DEL usuario:1000
Hashes (Objetos)
HSET perfil:100 nombre "Ana" email "ana@ejemplo.com"
HGETALL perfil:100
HGET perfil:100 email
HDEL perfil:100 email
Listas
LPUSH cola_tareas "tarea1" "tarea2"
RPUSH cola_tareas "tarea3"
LRANGE cola_tareas 0 -1
LPOP cola_tareas
RPOP cola_tareas
Conjuntos (Sets)
SADD etiquetas:articulo5 "redes" "bases_de_datos"
SMEMBERS etiquetas:articulo5
SREM etiquetas:articulo5 "redes"
Conjuntos ordenados (Sorted Sets)
ZADD ranking_jugadores 1500 "jugadorA"
ZADD ranking_jugadores 1850 "jugadorB"
ZRANGE ranking_jugadores 0 -1 WITHSCORES
ZREM ranking_jugadores "jugadorA"
Comandos generales
KEYS *usuario*
TYPE usuario:1000
EXISTS usuario:1000
TTL clave_con_caducidad