← Volver al listado de tecnologías

Comandos Esenciales de Valkey

Por: Artiko
valkeycomandoscliadministracion

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

  1. Usa SCAN para listar todas las claves con un patrón
  2. Implementa una transacción con MULTI/EXEC
  3. Configura y prueba la expiración de claves

Resumen

CategoríaComandos clave
ClavesEXISTS, DEL, KEYS, SCAN, TTL
ServidorINFO, CONFIG, DBSIZE
TransaccionesMULTI, EXEC, WATCH
PersistenciaBGSAVE, BGREWRITEAOF
DebugMONITOR, SLOWLOG