SlideShare una empresa de Scribd logo
1 de 38
#GlobalAzure
Las crónicas de redis
Fernando Escolar
■ ¿qué es redis?
■ ¿para qué sirve?
■ instalando redis
■ clusters
■ master/slave
■ redis-sentinel
■ cluster
■ resumen
Agenda
• 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
• 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
• 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
• 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
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
• 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
- 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
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
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
Master
Slave 1 Slave 2
Master/Slave
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
Master/Slave: configuración
slaveof <master-ip> <master-port>
masterauth <master-password>
slave-read-only [yes|no]
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
Master
Slave 1 Slave2
Sentinel
redis-sentinel
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-sentinel
cual es el servidor responsable antes de conectar.
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
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
Master 1 Master 2 Master 3
Cluster
Hash slots 0-5500 Hash slots 5501-11000 Hash slots 11001-16384
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.
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
Cluster: configuración
> CLUSTER MEET ip port
> CLUSTER NODES
> CLUSTER REPLICATE node-id
> CLUSTER ADDSLOTS slot [slot] ...
> CLUSTER SAVECONFIG
> CLUSTER RESET [HARD|SOFT]
Cluster: comandos
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
Master A
Slave A1 Slave A2
Master B
Slave B1 Slave B2
Master C
Slave C1 Slave C2
High Availability ≥3.0
■ 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
¿Preguntas?
■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
Thanks!

Más contenido relacionado

La actualidad más candente

How to Performance-Tune Apache Spark Applications in Large Clusters
How to Performance-Tune Apache Spark Applications in Large ClustersHow to Performance-Tune Apache Spark Applications in Large Clusters
How to Performance-Tune Apache Spark Applications in Large ClustersDatabricks
 
Oracle SQL, PL/SQL best practices
Oracle SQL, PL/SQL best practicesOracle SQL, PL/SQL best practices
Oracle SQL, PL/SQL best practicesSmitha Padmanabhan
 
Productionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerProductionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerEvan Chan
 
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsDB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsJohn Beresniewicz
 
Reverse proxies & Inconsistency
Reverse proxies & InconsistencyReverse proxies & Inconsistency
Reverse proxies & InconsistencyGreenD0g
 
Oracle APEX勉強会 - 認証と認可の実装を学ぶ
Oracle APEX勉強会 - 認証と認可の実装を学ぶOracle APEX勉強会 - 認証と認可の実装を学ぶ
Oracle APEX勉強会 - 認証と認可の実装を学ぶNakakoshi Yuji
 
Debunking the Myths of HDFS Erasure Coding Performance
Debunking the Myths of HDFS Erasure Coding Performance Debunking the Myths of HDFS Erasure Coding Performance
Debunking the Myths of HDFS Erasure Coding Performance DataWorks Summit/Hadoop Summit
 
How to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They WorkHow to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They WorkIlya Ganelin
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 
Threat hunting on the wire
Threat hunting on the wireThreat hunting on the wire
Threat hunting on the wireInfoSec Addicts
 
MongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB
 
MongoDB Schema Design and its Performance Implications
MongoDB Schema Design and its Performance ImplicationsMongoDB Schema Design and its Performance Implications
MongoDB Schema Design and its Performance ImplicationsLewis Lin 🦊
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsJulien Le Dem
 
Understanding Oracle RAC 11g Release 2 Internals
Understanding Oracle RAC 11g Release 2 InternalsUnderstanding Oracle RAC 11g Release 2 Internals
Understanding Oracle RAC 11g Release 2 InternalsMarkus Michalewicz
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
Sql injections
Sql injectionsSql injections
Sql injectionsKK004
 
Taller Redis
Taller RedisTaller Redis
Taller Redisbetabeers
 
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...Frans Rosén
 

La actualidad más candente (20)

How to Performance-Tune Apache Spark Applications in Large Clusters
How to Performance-Tune Apache Spark Applications in Large ClustersHow to Performance-Tune Apache Spark Applications in Large Clusters
How to Performance-Tune Apache Spark Applications in Large Clusters
 
Oracle SQL, PL/SQL best practices
Oracle SQL, PL/SQL best practicesOracle SQL, PL/SQL best practices
Oracle SQL, PL/SQL best practices
 
Productionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerProductionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job Server
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentalsDB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
DB Time, Average Active Sessions, and ASH Math - Oracle performance fundamentals
 
Reverse proxies & Inconsistency
Reverse proxies & InconsistencyReverse proxies & Inconsistency
Reverse proxies & Inconsistency
 
Oracle APEX勉強会 - 認証と認可の実装を学ぶ
Oracle APEX勉強会 - 認証と認可の実装を学ぶOracle APEX勉強会 - 認証と認可の実装を学ぶ
Oracle APEX勉強会 - 認証と認可の実装を学ぶ
 
Anti Debugging
Anti DebuggingAnti Debugging
Anti Debugging
 
Debunking the Myths of HDFS Erasure Coding Performance
Debunking the Myths of HDFS Erasure Coding Performance Debunking the Myths of HDFS Erasure Coding Performance
Debunking the Myths of HDFS Erasure Coding Performance
 
How to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They WorkHow to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They Work
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
Threat hunting on the wire
Threat hunting on the wireThreat hunting on the wire
Threat hunting on the wire
 
MongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB Aggregation Performance
MongoDB Aggregation Performance
 
MongoDB Schema Design and its Performance Implications
MongoDB Schema Design and its Performance ImplicationsMongoDB Schema Design and its Performance Implications
MongoDB Schema Design and its Performance Implications
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analytics
 
Understanding Oracle RAC 11g Release 2 Internals
Understanding Oracle RAC 11g Release 2 InternalsUnderstanding Oracle RAC 11g Release 2 Internals
Understanding Oracle RAC 11g Release 2 Internals
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
Sql injections
Sql injectionsSql injections
Sql injections
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
 

Destacado

¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)Nieves Gonzalez
 
Reglas de codd y normalizacion
Reglas de codd y normalizacionReglas de codd y normalizacion
Reglas de codd y normalizacionKevyn Martir
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datosAntonio Ognio
 
Pasos para elaborar un ensayo
Pasos para elaborar un ensayoPasos para elaborar un ensayo
Pasos para elaborar un ensayoCarlos Alcala
 

Destacado (6)

¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)¿Qué experiencia de usuario en los social media y cómo? (2012)
¿Qué experiencia de usuario en los social media y cómo? (2012)
 
Reglas de codd y normalizacion
Reglas de codd y normalizacionReglas de codd y normalizacion
Reglas de codd y normalizacion
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Reglas de Codd
Reglas de CoddReglas de Codd
Reglas de Codd
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Pasos para elaborar un ensayo
Pasos para elaborar un ensayoPasos para elaborar un ensayo
Pasos para elaborar un ensayo
 

Similar a Las cronicas de redis

Monta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIMonta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIUrko Zurutuza
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Clusters Beowulf
Clusters BeowulfClusters Beowulf
Clusters Beowulfsrcid
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en WindowsErick Cruz
 
Meetup: Spark + Kerberos
Meetup: Spark + KerberosMeetup: Spark + Kerberos
Meetup: Spark + KerberosStratio
 
Introduction to Oracle Clusterware 12c
Introduction to Oracle Clusterware 12cIntroduction to Oracle Clusterware 12c
Introduction to Oracle Clusterware 12cGuatemala User Group
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresNelson Calero
 
OpenSolaris para la comunidad educativa
OpenSolaris para la comunidad educativaOpenSolaris para la comunidad educativa
OpenSolaris para la comunidad educativaIban Nieto Castillero
 
UYOUG OTN Tour 2011 - RAC sin sorpresas
UYOUG OTN Tour 2011 - RAC sin sorpresasUYOUG OTN Tour 2011 - RAC sin sorpresas
UYOUG OTN Tour 2011 - RAC sin sorpresasNelson Calero
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerNelson Calero
 
Construyendo Aplicaciones Web con PHP + LUA + REDIS
Construyendo Aplicaciones Web con PHP + LUA + REDISConstruyendo Aplicaciones Web con PHP + LUA + REDIS
Construyendo Aplicaciones Web con PHP + LUA + REDISGonzalo Chacaltana
 

Similar a Las cronicas de redis (20)

Monta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIMonta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión II
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Clusters Beowulf
Clusters BeowulfClusters Beowulf
Clusters Beowulf
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en Windows
 
Meetup spark + kerberos
Meetup spark + kerberosMeetup spark + kerberos
Meetup spark + kerberos
 
Meetup: Spark + Kerberos
Meetup: Spark + KerberosMeetup: Spark + Kerberos
Meetup: Spark + Kerberos
 
Introduction to Oracle Clusterware 12c
Introduction to Oracle Clusterware 12cIntroduction to Oracle Clusterware 12c
Introduction to Oracle Clusterware 12c
 
Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
 
trabajo numero 3
trabajo numero 3trabajo numero 3
trabajo numero 3
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New features
 
OpenSolaris para la comunidad educativa
OpenSolaris para la comunidad educativaOpenSolaris para la comunidad educativa
OpenSolaris para la comunidad educativa
 
Certification Day
Certification DayCertification Day
Certification Day
 
My sql clase_1
My sql clase_1My sql clase_1
My sql clase_1
 
UYOUG OTN Tour 2011 - RAC sin sorpresas
UYOUG OTN Tour 2011 - RAC sin sorpresasUYOUG OTN Tour 2011 - RAC sin sorpresas
UYOUG OTN Tour 2011 - RAC sin sorpresas
 
Redis: no solo una caché
Redis: no solo una cachéRedis: no solo una caché
Redis: no solo una caché
 
My SQL
My SQLMy SQL
My SQL
 
Alta disponibilidad con Pacemaker
Alta disponibilidad con PacemakerAlta disponibilidad con Pacemaker
Alta disponibilidad con Pacemaker
 
Bases de datos distribuidas
Bases de datos distribuidasBases de datos distribuidas
Bases de datos distribuidas
 
Construyendo Aplicaciones Web con PHP + LUA + REDIS
Construyendo Aplicaciones Web con PHP + LUA + REDISConstruyendo Aplicaciones Web con PHP + LUA + REDIS
Construyendo Aplicaciones Web con PHP + LUA + REDIS
 

Más de Fernando Escolar Martínez-Berganza

Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Fernando Escolar Martínez-Berganza
 

Más de Fernando Escolar Martínez-Berganza (20)

Por qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta malPor qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta mal
 
Deconstrucción de SOLID
Deconstrucción de SOLIDDeconstrucción de SOLID
Deconstrucción de SOLID
 
Gapand - por qué odio git?
Gapand - por qué odio git?Gapand - por qué odio git?
Gapand - por qué odio git?
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
 
Devops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscaleDevops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscale
 
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
 
Reconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTSReconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTS
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
 
Unit testing en Windows 10
Unit testing en Windows 10Unit testing en Windows 10
Unit testing en Windows 10
 
DotNet Conference: code smells
DotNet Conference: code smellsDotNet Conference: code smells
DotNet Conference: code smells
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
 
Codemotion: descubriendo las cachés
Codemotion: descubriendo las cachésCodemotion: descubriendo las cachés
Codemotion: descubriendo las cachés
 
Unit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugsUnit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugs
 
We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)
 
Mobile services by @quiqu3
Mobile services by @quiqu3Mobile services by @quiqu3
Mobile services by @quiqu3
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
 
Where is my beer?
Where is my beer?Where is my beer?
Where is my beer?
 
Coding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival GuideCoding kihon + Zombie Code Survival Guide
Coding kihon + Zombie Code Survival Guide
 
Level up your skills
Level up your skillsLevel up your skills
Level up your skills
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Último (10)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Las cronicas de redis

  • 1. #GlobalAzure Las crónicas de redis Fernando Escolar
  • 2.
  • 3.
  • 4. ■ ¿qué es redis? ■ ¿para qué sirve? ■ instalando redis ■ clusters ■ master/slave ■ redis-sentinel ■ cluster ■ resumen Agenda
  • 5. • 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
  • 6. • 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
  • 7. • 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
  • 8. • 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
  • 9. 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
  • 10. • 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
  • 11.
  • 12.
  • 13. - 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
  • 14.
  • 15. 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
  • 16. 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
  • 17.
  • 18.
  • 19. Master Slave 1 Slave 2 Master/Slave
  • 20. 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
  • 21. Master/Slave: configuración slaveof <master-ip> <master-port> masterauth <master-password> slave-read-only [yes|no]
  • 22. 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
  • 24. 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-sentinel cual es el servidor responsable antes de conectar.
  • 25. 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
  • 26. 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
  • 27. Master 1 Master 2 Master 3 Cluster Hash slots 0-5500 Hash slots 5501-11000 Hash slots 11001-16384
  • 28. 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.
  • 29. appendonly yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 Cluster: configuración
  • 30. > CLUSTER MEET ip port > CLUSTER NODES > CLUSTER REPLICATE node-id > CLUSTER ADDSLOTS slot [slot] ... > CLUSTER SAVECONFIG > CLUSTER RESET [HARD|SOFT] Cluster: comandos
  • 31. 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
  • 32. Master A Slave A1 Slave A2 Master B Slave B1 Slave B2 Master C Slave C1 Slave C2 High Availability ≥3.0
  • 33.
  • 34. ■ 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
  • 36. ■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
  • 37.