Redis es un sistema de almacenamiento de datos en memoria de tipo clave-valor que permite operaciones básicas como establecer y obtener valores, y soporta 5 tipos de datos principales: cadenas de texto, hashes, listas, conjuntos y conjuntos ordenados. Aunque los datos se almacenan en memoria, Redis también los persiste de forma periódica en disco. Se utiliza comúnmente para caché, colas y publicación-suscripción.
2. ¿Qué vamos a ver hoy?
• ¿Qué es Redis?
• Operaciones / Tipos de datos
• Transacciones
• Ejemplo Red Social
3. Algunos datos
• Redis = REmote DIctionary Server
• La primera release fue en 2009
• La versión más reciente: 2.8.19
• Escrito en C
• Tiene librerías para más de 30 lenguajes de programación
• Una buena documentación
4. Redis
“Redis es un Sistema de almacenamiento y caché avanzado, que usa
datos de tipo clave-valor, open source y con licencia BSD.
Usualmente se le denomina servidor de estructura de datos ya que
una clave puede contener:
strings, hashes, lists, sets, sorted sets, bitmaps y hyperloglogs.”
5. Redis
• Redis trabaja in-memory pero persiste en disco
• 1 Millón de pequeñas “Key -> String” usan ~ 100 MB de memoria
• Un solo hilo de ejecución – pero la CPU no será un cuello de botella
• Un sistema normal Linux puede enviar 500k requests/segundo
• El límite de almacenamiento es la memoria disponible
• max. 232 keys
6. Diferencias con Memcached
• Memcached es un “Sistema de cache en memoria distribuido”
• Redis persiste los datos en el disco de forma eventual
• Memcached es un sistema caché LRU (Least Recently Used)
• Redis tiene diferentes tipos de datos y features
• Memcached es multi hilo
• Velocidad similar (en local)
18. SORTED SETS
• ZADD key score member [score member …]
• ZSCORE key member
• ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset
• count]
• ZREM key member [member ...]
• ZREMRANGEBYLEX key min max
• ZINCRBY key increment member
19. HYPERLOGLOG
“Hyperloglog es una técnica aproximada para calcular el número de
entradas distintas en un conjunto (cardinalidad). Esto se consigue
utilizando poca memoria. Por ejemplo, para conseguir el 99% de
precision, se necesitan solo 16 Kb.”
25. CASOS DE USO
• Listados de últimos xxx: LPUSH y LTRIM
• Tablas de top o de rankings: ZADD, ZREVRANGE y ZREVRANGEBYSCORE
• Cálculos de tipo “karma”: ZADD, ZRANK, ZINCRBY
• Contadores usuarios activos: INCR y EXPIRE
• Publicación y suscripción: mediator
• QUEUE’s (colas): BLPOP y LPUSH
• Textos auto-completables: ZADD, ZRANK y ZRANGE
• Almacenar información que caduca: EXPIRE
• …
27. EN RESUMEN
• Maneja cadenas de texto (o byte arrays)
• 5 tipos de datos:
• Keys
• Hashes
• Lists
• Sets
• Sorted Sets
• Pub/Sub
• Operaciones con datos
• Scripts en LUA
• En memoria, pero persiste en forma de snapshots