Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Redis: no solo una caché

848 visualizaciones

Publicado el

Visió

Publicado en: Tecnología
  • Sé el primero en comentar

Redis: no solo una caché

  1. 1. Fernando Escolar @fernandoescolar Alex Casquete @acasquete
  2. 2. ¿Qué vamos a ver hoy? • ¿Qué es Redis? • Operaciones / Tipos de datos • Transacciones • Ejemplo Red Social
  3. 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. 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. 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. 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)
  7. 7. Memcached Redis
  8. 8. Demo: Consola
  9. 9. Operaciones / Tipos de datos
  10. 10. BASIC • SET key value [EX seconds] [PX milliseconds] [NX|XX] • GET key • DEL key
  11. 11. BASIC • EXISTS key • KEYS pattern • EXPIRE key seconds • MGET key [key …] • MSET key value [key value …]
  12. 12. STRINGS • STRLEN KEY • APPEND key value
  13. 13. ENTEROS • INCR key / INCRBY key increment • DECR key / DECRBY key increment
  14. 14. HASHES • HSET key field value • HGET key field • HGETALL key • HDEL key field [field …]
  15. 15. LISTAS • LSET key index value • LPUSH key value [value …] / RPUSH key value [value …] • LPOP key / RPOP key • LRANGE key start stop • LREM key count value
  16. 16. SETS • SADD key member [member …] • SMEMBERS key / SRANDMEMBER key [count] • SSCAN key cursor [MATCH pattern] [COUNT count] • SISMEMBER key member • SPOP key • SREM key member [member …]
  17. 17. OPERACIONES CON SETS • SINTER key [key …] / SINTERSTORE destination key [key …] • SDIFF key [key …] / SDIFFSTORE destination key [key …] • SUNION key [key …] / SUNIONSTORE destination key [key …]
  18. 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. 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.”
  20. 20. PUB/SUB • SUBSCRIBE channel [channel …] • UNSUBSCRIBE [channel [channel …]] • PUBLISH channel message
  21. 21. TRANSACCIONES • MULTI • EXEC • DISCARD
  22. 22. TRANSACCIONES WATCH mykey val = GET mykey val = val + 1 MULTI SET mykey $val EXEC
  23. 23. HyperLogLog • PFADD key element [element …] • PFCOUNT key [key …] • PFMERGE destkey sourcekey [sourcekey ...] • Caso de uso: Track Unique Visitors
  24. 24. SCRIPTING Ejecutar scripts LUA en lado servidor • EVAL script numkeys key [key ...] arg [arg …] • SCRIPT LOAD script • EVALSHA sha1 numkeys key [key ...] arg [arg ...]
  25. 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 • …
  26. 26. Demo: Retwis
  27. 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
  28. 28. MÁS INFORMACIÓN • https://github.com/fernandoescolar/Tokiota.Redis • http://redis.io/documentation • https://servicestack.net/ • Redis Bitmaps http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics- using-redis-bitmaps/

×