Conexión
CLI
redis-cli redis-cli -h 127.0.0.1 -p 6379 redis-cli -a password -n 2 redis-cli --tls -u rediss://user:pass@host:6380
Conexión con Driver (Python)
import redis r = redis.Redis(host='localhost', port=6379, db=0) r.set('key', 'value') print(r.get('key'))
Información del Servidor
PING -- returns PONG INFO server -- server details INFO memory -- memory usage DBSIZE -- number of keys in current db
Cadenas
Operaciones Básicas
SET name "Alice" GET name SET counter 100 MSET a 1 b 2 c 3 MGET a b c
Operaciones Numéricas
INCR counter -- 101 INCRBY counter 10 -- 111 DECR counter -- 110 DECRBY counter 5 -- 105 INCRBYFLOAT price 2.5
Comandos de Cadenas
SET key valEstablecer valor de cadena
GET keyObtener valor de cadena
SETNX key valEstablecer solo si la clave no existe
SETEX key sec valEstablecer con expiración en segundos
APPEND key valAgregar al valor existente
STRLEN keyLongitud del valor de cadena
Listas
Operaciones de Lista
LPUSH queue "first" RPUSH queue "last" LRANGE queue 0 -1 -- all elements LPOP queue RPOP queue
Comandos de Lista
LPUSH / RPUSHInsertar al inicio / final de la lista
LPOP / RPOPExtraer del inicio / final
LRANGE key start stopObtener rango de elementos
LLEN keyLongitud de la lista
LINDEX key idxElemento en el índice
LREM key count valEliminar count ocurrencias de val
BLPOP key timeoutExtracción bloqueante (para colas)
Conjuntos y Conjuntos Ordenados
Operaciones de Conjuntos
SADD tags "python" "redis" "docker" SMEMBERS tags SISMEMBER tags "python" -- 1 (true) SREM tags "docker" SCARD tags -- count
Operaciones de Conjuntos
SUNION set1 set2 -- union SINTER set1 set2 -- intersection SDIFF set1 set2 -- difference
Operaciones de Conjuntos Ordenados
ZADD leaderboard 100 "Alice" 85 "Bob" ZRANGE leaderboard 0 -1 WITHSCORES ZREVRANGE leaderboard 0 2 ZSCORE leaderboard "Alice" ZRANK leaderboard "Alice" -- 0-based rank
Comandos de Conjuntos Ordenados
ZADD key score memberAgregar miembro con puntuación
ZRANGE key start stopRango por posición (menor a mayor)
ZREVRANGE key start stopRango por posición (mayor a menor)
ZINCRBY key incr memberIncrementar puntuación del miembro
ZRANGEBYSCORE key min maxRango por valor de puntuación
ZCARD keyNúmero de miembros
Hashes
Operaciones de Hash
HSET user:1 name "Alice" age 30 HGET user:1 name HGETALL user:1 HMSET user:2 name "Bob" age 25 HMGET user:1 name age
Comandos de Hash
HSET key field valEstablecer campo del hash
HGET key fieldObtener campo del hash
HGETALL keyObtener todos los campos y valores
HDEL key fieldEliminar campo del hash
HEXISTS key fieldVerificar existencia del campo
HINCRBY key field nIncrementar valor del campo
HKEYS keyTodos los nombres de campos
HLEN keyNúmero de campos
Claves y Expiración
Comandos de Claves
KEYS patternBuscar claves que coincidan con el patrón (lento)
SCAN cursor MATCH patIterar claves de forma incremental (seguro)
EXISTS keyVerificar si la clave existe
DEL keyEliminar clave
TYPE keyObtener tipo de dato de la clave
RENAME key newkeyRenombrar una clave
Comandos de Expiración
EXPIRE key 3600 -- expire in 1 hour PEXPIRE key 5000 -- expire in 5000 ms TTL key -- seconds until expiry PTTL key -- ms until expiry PERSIST key -- remove expiry
Patrones de Claves
SET session:abc123 "data" EX 1800 -- EX = seconds, PX = milliseconds -- NX = only if not exists -- XX = only if exists SET lock:order42 "owner" NX EX 10
Pub/Sub
Pub/Sub Básico
-- Subscriber (terminal 1) SUBSCRIBE news alerts -- Publisher (terminal 2) PUBLISH news "Breaking: Redis 8 released"
Suscripción por Patrón
PSUBSCRIBE news.* -- matches news.tech, news.sports, etc.
Comandos Pub/Sub
SUBSCRIBE channelEscuchar mensajes en el canal
PUBLISH channel msgEnviar mensaje al canal
PSUBSCRIBE patternSuscribir a patrón
UNSUBSCRIBE channelDejar de escuchar
PUBSUB CHANNELSListar canales activos
Transacciones
MULTI / EXEC
MULTI SET balance:1 900 SET balance:2 1100 EXEC -- executes atomically
Bloqueo Optimista
WATCH balance:1 val = GET balance:1 -- read current MULTI SET balance:1 (val - 100) EXEC -- EXEC returns nil if balance:1 changed
Comandos de Transacciones
MULTIIniciar bloque de transacción
EXECEjecutar comandos en cola
DISCARDDescartar comandos en cola
WATCH keyVigilar clave para cambios (bloqueo optimista)
UNWATCHOlvidar todas las claves vigiladas
Persistencia
Snapshots RDB
SAVE -- synchronous snapshot BGSAVE -- background snapshot LASTSAVE -- timestamp of last save
AOF (Archivo Solo de Adición)
appendonly yesHabilitar AOF en redis.conf
appendfsync alwaysFsync en cada escritura (más seguro, más lento)
appendfsync everysecFsync una vez por segundo (recomendado)
appendfsync noDejar que el OS decida (más rápido, más riesgoso)
Comandos de Persistencia
CONFIG GET save CONFIG SET save "900 1 300 10" -- snapshot if 1 change in 900s or 10 in 300s BGREWRITEAOF -- rewrite AOF in background
Patrones Comunes
Bloqueo Distribuido
SET lock:resource "owner-id" NX EX 30 -- NX = acquire only if not held -- EX 30 = auto-release after 30s DEL lock:resource -- explicit release
Limitador de Velocidad
key = "rate:user:42" INCR key EXPIRE key 60 -- 60-second window -- reject if GET key > max_requests
Patrón de Caché
val = GET "cache:user:1" if val is nil: val = fetch_from_db(1) SET "cache:user:1" val EX 300
Almacenamiento de Sesiones
HSET sess:abc uid 42 role "admin" EXPIRE sess:abc 1800 -- 30 min TTL HGETALL sess:abc