Nivel 1 · 20 min
Estructuras de Datos Redis
Redis no es solo un caché de clave-valor — es una base de datos de estructuras de datos en memoria. Strings, Hashes, Lists, Sets, Sorted Sets y Streams son estructuras nativas con comandos especializados. Elegir la estructura correcta determina el rendimiento y la expresividad de tu solución.
Strings y Hashes
String es la estructura más básica — puede almacenar texto, JSON serializado o valores binarios (hasta 512MB). Comandos: SET, GET, INCR, EXPIRE, SETNX (set if not exists — útil para locks distribuidos). Hash almacena un map de campos dentro de una clave — ideal para objetos como usuarios o sesiones. HSET user:1 name ''Ana'' age 25. Más eficiente que JSON serializado cuando modificás campos individuales.
Lists y Sets
List es una lista doblemente enlazada — LPUSH/RPUSH/LPOP/RPOP. Ideal para colas (RPUSH + LPOP), stacks (LPUSH + LPOP) y feeds de actividad. LRANGE para paginación. Set es una colección de strings únicos — SADD, SREM, SISMEMBER, SMEMBERS. Útil para tags, seguidores únicos, presencia. SUNION, SINTER, SDIFF para operaciones entre sets. Sorted Set agrega score — ZADD, ZRANGE, ZRANGEBYSCORE — perfecto para leaderboards y rate limiting.
Sorted Sets y Streams
Sorted Set mantiene unicidad + orden por score. ZADD leaderboard 1500 ''player1''. ZREVRANGE leaderboard 0 9 para top 10. Los scores pueden ser timestamps — útil para rate limiting en ventana deslizante. Stream es una estructura append-only para event streaming (como Kafka en pequeño). XADD, XREAD, consumer groups. Ideal para event sourcing local, audit logs y notificaciones en tiempo real.
Code example
// Leaderboard con Sorted Set
ZADD game:leaderboard 9850 "player:alice"
ZADD game:leaderboard 8200 "player:bob"
ZREVRANGE game:leaderboard 0 9 WITHSCORES -- top 10
ZRANK game:leaderboard "player:alice" -- posicion de alice
ZINCRBY game:leaderboard 150 "player:bob" -- sumar puntos