~/VibeHandbook
PDF gratis

Bases de datos

redis.io

Redis

Qué es

Imagina tener las notas que necesitas ahora mismo sobre el escritorio frente a ti, en lugar de caminar hasta el archivador cada vez que necesitas una — mucho más rápido, pero el escritorio se vacía si se va la luz. Redis funciona como ese escritorio: guarda los datos en memoria de trabajo rápida (RAM, o Random Access Memory, memoria de acceso aleatorio) en lugar de en disco, por lo que las lecturas y escrituras son extremadamente rápidas. Opcionalmente también puede guardar en disco. Funciona como un almacén clave-valor, pero admite estructuras de datos ricas como listas, conjuntos, conjuntos ordenados, hashes y streams. Se usa con más frecuencia como , almacén de sesiones, o limitador de tasa junto a una principal.

Puntos fuertes

  • Latencia inferior al milisegundo gracias a su operación en memoria.
  • Estructuras versátiles: strings, hashes, listas, conjuntos, conjuntos ordenados, streams.
  • TTL (Time To Live, tiempo de vida)/expiración integrados — cada entrada puede autoeliminarse tras un tiempo determinado — lo hace ideal para caché y sesiones.
  • Operaciones atómicas y scripting en Lua para contadores y bloqueos seguros.
  • El pub/sub y los streams admiten mensajería y pipelines de eventos.

Concesiones

  • Los datos están limitados por la memoria disponible; los conjuntos de datos grandes salen caros.
  • La persistencia es opcional y puede perder escrituras recientes si el sistema falla.
  • No sustituye a un almacén relacional duradero.
  • La creación de clústeres añade complejidad operativa para el particionado (sharding) y la conmutación por error (failover).

Cuándo usarlo

Usa Redis para cachear resultados de consultas costosas, almacenar sesiones, implementar limitación de tasa, gestionar colas de trabajos, construir tablas de clasificación o transmitir mensajes en tiempo real. Combínalo con una base de datos duradera que contenga la fuente de verdad.

Encaje con vibe coding

Al dirigir a la IA, sé explícito en que Redis es una caché o un almacén auxiliar, no el sistema de referencia. Por eso siempre debe establecer un TTL en las entradas cacheadas. También debe diseñar un esquema claro de nomenclatura de claves (por ejemplo, user:123:profile). Pide a la IA que use comandos atómicos como INCR para contadores y SET ... NX EX para bloqueos, en lugar de secuencias de leer-modificar-escribir que pueden generar condiciones de carrera. Un buen consejo: haz que la IA use el patrón cache-aside. Eso simplemente significa: primero busca en la caché; si no está ahí, obténlo de la base de datos; luego guárdalo en la caché para la próxima vez. Pide también a la IA que explique su estrategia de invalidación — cómo se eliminan los datos antiguos y obsoletos — para que los datos desactualizados no persistan.

# Cache a value with a 1-hour expiry
SET user:123:profile "{\"name\":\"Ada\"}" EX 3600

# Atomic rate-limit counter
INCR rate:ip:203.0.113.5
EXPIRE rate:ip:203.0.113.5 60

# Distributed lock: set only if not exists, auto-expire
SET lock:job:42 "owner-a" NX EX 30

# Leaderboard with a sorted set
ZADD leaderboard 4200 "player:7"
ZREVRANGE leaderboard 0 9 WITHSCORES