← Volver al listado de tecnologías
Comandos Esenciales de Valkey
Comandos Esenciales
Comandos de Claves
Gestión básica
# Verificar existencia
EXISTS clave # 1 si existe, 0 si no
EXISTS a b c # Cuenta cuántas existen
# Eliminar
DEL clave # Elimina sincrónicamente
UNLINK clave # Elimina asincrónicamente (más rápido)
# Renombrar
RENAME vieja nueva
RENAMENX vieja nueva # Solo si nueva no existe
# Tipo de dato
TYPE clave # string, list, set, zset, hash
# Tamaño en memoria
MEMORY USAGE clave
Búsqueda de claves
# Buscar por patrón (¡cuidado en producción!)
KEYS user:* # Todas las que empiecen con user:
KEYS *session* # Contengan session
# SCAN - iteración segura
SCAN 0 MATCH user:* COUNT 100
# Retorna cursor y resultados, usar cursor para siguiente página
# Ejemplo de iteración completa
SCAN 0 MATCH "cache:*" COUNT 1000
# Si cursor != 0, continuar con ese cursor
Expiración (TTL)
# Establecer expiración
EXPIRE clave 3600 # En segundos
PEXPIRE clave 3600000 # En milisegundos
EXPIREAT clave 1702900000 # Timestamp Unix
# Ver tiempo restante
TTL clave # Segundos (-1 sin exp, -2 no existe)
PTTL clave # Milisegundos
# Quitar expiración
PERSIST clave
# SET con expiración
SET clave "valor" EX 60 # 60 segundos
SET clave "valor" PX 60000 # 60000 milisegundos
SET clave "valor" EXAT 1702900000 # Timestamp
Comandos de Servidor
Información
# Información completa
INFO
# Secciones específicas
INFO server
INFO memory
INFO stats
INFO replication
INFO clients
INFO keyspace
# Tiempo del servidor
TIME
# Clientes conectados
CLIENT LIST
CLIENT ID
Configuración
# Ver configuración
CONFIG GET maxmemory
CONFIG GET * # Toda la configuración
# Modificar en caliente
CONFIG SET maxmemory 512mb
CONFIG SET maxmemory-policy volatile-lru
# Guardar configuración
CONFIG REWRITE
Bases de datos
# Cambiar base de datos (0-15 por defecto)
SELECT 1
# Tamaño de la base actual
DBSIZE
# Limpiar base actual
FLUSHDB
# Limpiar todas las bases
FLUSHALL
# Mover clave a otra base
MOVE clave 2
Persistencia
# Snapshot manual
BGSAVE # En background
SAVE # Bloqueante (¡cuidado!)
# Info de último snapshot
LASTSAVE
# Reescribir AOF
BGREWRITEAOF
Transacciones básicas
# Iniciar transacción
MULTI
SET cuenta:1 1000
SET cuenta:2 2000
EXEC # Ejecuta todo atómicamente
# Cancelar transacción
MULTI
SET clave "valor"
DISCARD # Cancela
# Watch - optimistic locking
WATCH clave
GET clave
MULTI
SET clave "nuevo"
EXEC # Falla si clave cambió
Pub/Sub básico
# Terminal 1 - Suscriptor
SUBSCRIBE canal1 canal2
PSUBSCRIBE user:* # Patrón
# Terminal 2 - Publicador
PUBLISH canal1 "Hola mundo"
# Retorna número de suscriptores que recibieron
Utilidades
Debug y desarrollo
# Ping
PING # PONG
PING "mensaje" # "mensaje"
# Echo
ECHO "test" # "test"
# Simular latencia
DEBUG SLEEP 1
# Objeto encoding
OBJECT ENCODING clave
OBJECT FREQ clave # Frecuencia de acceso
Scripting
# Evaluar Lua
EVAL "return 'Hola'" 0
EVAL "return redis.call('GET', KEYS[1])" 1 mi_clave
# Cargar script
SCRIPT LOAD "return 'test'"
# Retorna SHA1
# Ejecutar por SHA
EVALSHA <sha1> 0
Patrones comunes
Cache con fallback
# Pseudocódigo
GET cache:producto:1
# Si NULL:
# valor = obtener_de_db()
# SETEX cache:producto:1 3600 valor
Rate limiting
# Limitar a 100 requests/minuto
MULTI
INCR rate:user:42
EXPIRE rate:user:42 60
EXEC
# Verificar
GET rate:user:42
# Si > 100, rechazar
Distributed lock
# Adquirir lock
SET lock:recurso "owner123" NX EX 30
# Liberar (solo si eres el owner)
# Usar Lua para atomicidad
EVAL "if redis.call('get',KEYS[1]) == ARGV[1] then return redis.call('del',KEYS[1]) else return 0 end" 1 lock:recurso owner123
Monitoreo
# Ver comandos en tiempo real
MONITOR # ¡Solo desarrollo!
# Comandos lentos
SLOWLOG GET 10
SLOWLOG LEN
SLOWLOG RESET
# Latencia
LATENCY DOCTOR
LATENCY HISTORY
Ejercicios
- Usa SCAN para listar todas las claves con un patrón
- Implementa una transacción con MULTI/EXEC
- Configura y prueba la expiración de claves
Resumen
| Categoría | Comandos clave |
|---|---|
| Claves | EXISTS, DEL, KEYS, SCAN, TTL |
| Servidor | INFO, CONFIG, DBSIZE |
| Transacciones | MULTI, EXEC, WATCH |
| Persistencia | BGSAVE, BGREWRITEAOF |
| Debug | MONITOR, SLOWLOG |