Download - Las cronicas de redis
![Page 1: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/1.jpg)
#GlobalAzure
Las crónicas de redisFernando Escolar
![Page 2: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/2.jpg)
![Page 3: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/3.jpg)
![Page 4: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/4.jpg)
■ ¿qué es redis?■ ¿para qué sirve?
■ instalando redis
■ clusters■ master/slave
■ redis-sentinel
■ cluster
■ resumen
Agenda
![Page 5: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/5.jpg)
• Redis es un sistema de almacenamiento y cache avanzado• 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.
redis
![Page 6: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/6.jpg)
• Trabaja en memoria• pero persiste en forma de dumps y logs de comandos
• Tiene configuraciones simples para actuar como cluster y master/slave
• Soporta transacciones
• Implementa Publicación/Suscripción
• Procesos en forma de scripts en Lua
• …
redis
![Page 7: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/7.jpg)
• Datos de Interes• redis = REmote DIctionary Server
• La primera release fue en 2009
• La versión más reciente: 3.0.0 (3.2 inestable)
• Escrito en C ANSI
• Tiene librerías para más de 30 lenguajes de programación
• Una buena documentación
redis
![Page 8: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/8.jpg)
• Números• un cluster puede componerse de hasta ~1000 nodos
• 16384 slots de almacenamiento de claves (divididos en los master del cluster)
• 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 el mismo que el de memoria disponible
• max. 232 keys
redis
![Page 9: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/9.jpg)
redis memcached
Sistema distribuido X X
Trabaja en memoria X X
Persiste eventualmente X
Caché LRU X X
Almacén de datos X
Features: Pub/Sub, Lua Scripting, … X
Diferentes estructuras de datos X
Multi-hilo X
Alta velocidad X X
Operaciones con datos X
redis vs. memcached
![Page 10: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/10.jpg)
• Casos donde aplica redis:• 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
redis
![Page 11: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/11.jpg)
![Page 12: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/12.jpg)
![Page 13: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/13.jpg)
- Platform as a Service- Azure Cache Redis
- Software as a Service- Redis Cloud by Redis Labs, Inc.
- http://azure.microsoft.com/en-us/marketplace/partners/garantiadata/redis/
- Infrastructure as a Service- Virtual Machines
Diferentes opciones
![Page 14: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/14.jpg)
![Page 15: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/15.jpg)
https://github.com/MSOpenTech/Redis
Nuget
PM> Install-Package Redis-64
Chocolatey
c:\> choco install redis-64
Instalar en máquina virtual Windows
v. 2.8.19
![Page 16: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/16.jpg)
root@vm:/# apt-get install redis-server
root@vm:/# wget http://download.redis.io/redis-stable.tar.gz
root@vm:/# tar xvzf redis-stable.tar.gz
root@vm:/# cd redis-stable
root@vm:/# make
Instalar en máquina virtual Linux
v. 3.0.0
![Page 17: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/17.jpg)
![Page 18: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/18.jpg)
![Page 19: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/19.jpg)
Master
Slave 1 Slave 2
Master/Slave
![Page 20: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/20.jpg)
Master/Slave
• La replicación es asíncrona
• Un maestro puede tener ‘n’ esclavos
• Los esclavos pueden ser maestro de otros esclavos
• La replicación no bloquea ni al maestro ni a los esclavos
• Un esclavo puede ser de solo lectura
• Se puede eliminar la persistencia del maestro y que la realice un esclavo
![Page 21: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/21.jpg)
Master/Slave: configuración
slaveof <master-ip> <master-port>
masterauth <master-password>
slave-read-only [yes|no]
![Page 22: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/22.jpg)
Master/Slave: comandos
> SLAVEOF [ip] [port]
Si no se especifica nada y ya es un esclavo, lo promociona a maestro.
Si se especifica la ip y el puerto, lo convierte en esclavo en caliente
![Page 23: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/23.jpg)
Master
Slave 1 Slave2
Sentinel
redis-sentinel
![Page 24: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/24.jpg)
redis-sentinel:
• Monitorización: comprueba que maestros y esclavos funcionen como se espera
• Notificación: notifica de errores mediante una api
• Failover automático: si detecta un error puede promocionar un esclavo para sustituir un maestro
• Proveedor de configuración: los clientes preguntarán a redis-sentinelcual es el servidor responsable antes de conectar.
![Page 25: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/25.jpg)
redis-sentinel: configuración
sentinel monitor <name> <ip> <port> <quorum>
sentinel down-after-milliseconds <name> 60000
sentinel failover-timeout <name> 180000
sentinel parallel-syncs <name> 1
*quorum: número de sentinels que tienen que detectar un estado de error para marcar un maestro como ODOWN
![Page 26: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/26.jpg)
Cluster
• A partir de la v. 3.0
• Añade:• La capacidad de fragmentar la información en varios nodos de forma
automática
• La capacidad de continuar con las operaciones cuando una serie de sub nodos experimentan errores
![Page 27: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/27.jpg)
Master 1 Master 2 Master 3
Cluster
Hash slots 0-5500 Hash slots 5501-11000 Hash slots 11001-16384
![Page 28: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/28.jpg)
Cluster
• Existen 16384 hash slots
• Para saber el slot: slot_id = CRC16(key) mod 16384• Si se escribe algo entre llaves dentro de la clave, solo se calcula el slot con esa
parte:• {users:followers}123 122 124 125
• {users:followers}124 122 123 125
• Acepta una configuración master/slave dentro del cluster
• Si un maestro falla promociona a su esclavo más hábil como maestro
• Cluster Bus: cada nodo se conecta con los demás nodos a través del bus.
![Page 29: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/29.jpg)
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
Cluster: configuración
![Page 30: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/30.jpg)
> CLUSTER MEET ip port
> CLUSTER NODES
> CLUSTER REPLICATE node-id
> CLUSTER ADDSLOTS slot [slot] ...
> CLUSTER SAVECONFIG
> CLUSTER RESET [HARD|SOFT]
Cluster: comandos
![Page 31: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/31.jpg)
Master A
Slave A1 Slave A2
Sentinel
Master B
Slave B1 Slave B2
Sentinel
Master C
Slave C1 Slave C2
Sentinel
High Availability ≥2.8
![Page 32: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/32.jpg)
Master A
Slave A1 Slave A2
Master B
Slave B1 Slave B2
Master C
Slave C1 Slave C2
High Availability ≥3.0
![Page 33: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/33.jpg)
![Page 34: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/34.jpg)
■ Maneja cadenas de texto (o byte arrays)■ 5 tipos de datos: Keys, Hashes, Lists, Sets y Sorted Sets■ Pub/Sub, Lua Scripts, colas, transacciones …■ Mono-hilo, en memoria pero persiste en forma de snapshots
■ Recomendable instalar la última versión estable (3.0.0 actualmente)
■ Para usarlo como memoria caché: Azure redis cache (PaaS)
■ Para usarlo facilmente: Redis Cloud (SaaS)
■ Para instalaciones simples usar master/slave (IaaS)
■ Para clusters complejos usar la tecnología de cluster (IaaS)■master/slave■ redis-sentinel■ cluster
Resumen
![Page 35: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/35.jpg)
¿Preguntas?
![Page 36: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/36.jpg)
■Sitio oficial de redis
http://redis.io/
■Sitio del fork de redis para Windows
https://github.com/MSOpenTech/Redis
■Servicio en Azure de cache redis
http://azure.microsoft.com/es-es/services/cache/
■Redis Cloud by Redis Labs
http://azure.microsoft.com/en-us/marketplace/partners/garantiadata/redis/
■Documentación de redis
https://github.com/antirez/redis-doc
Bibliografía
![Page 37: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/37.jpg)
![Page 38: Las cronicas de redis](https://reader031.vdocumento.com/reader031/viewer/2022013122/55a5d1931a28abd4298b48fb/html5/thumbnails/38.jpg)
Thanks!