SlideShare una empresa de Scribd logo
1 de 29
Fernando Escolar
@fernandoescolar
Alex Casquete
@acasquete
¿Qué vamos a ver hoy?
• ¿Qué es Redis?
• Operaciones / Tipos de datos
• Transacciones
• Ejemplo Red Social
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
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.”
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
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)
Memcached
Redis
Demo: Consola
Operaciones / Tipos de datos
BASIC
• SET key value [EX seconds] [PX milliseconds] [NX|XX]
• GET key
• DEL key
BASIC
• EXISTS key
• KEYS pattern
• EXPIRE key seconds
• MGET key [key …]
• MSET key value [key value …]
STRINGS
• STRLEN KEY
• APPEND key value
ENTEROS
• INCR key / INCRBY key increment
• DECR key / DECRBY key increment
HASHES
• HSET key field value
• HGET key field
• HGETALL key
• HDEL key field [field …]
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
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 …]
OPERACIONES CON SETS
• SINTER key [key …] / SINTERSTORE destination key [key …]
• SDIFF key [key …] / SDIFFSTORE destination key [key …]
• SUNION key [key …] / SUNIONSTORE destination key [key …]
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
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.”
PUB/SUB
• SUBSCRIBE channel [channel …]
• UNSUBSCRIBE [channel [channel …]]
• PUBLISH channel message
TRANSACCIONES
• MULTI
• EXEC
• DISCARD
TRANSACCIONES
WATCH mykey
val = GET mykey
val = val + 1
MULTI
SET mykey $val
EXEC
HyperLogLog
• PFADD key element [element …]
• PFCOUNT key [key …]
• PFMERGE destkey sourcekey [sourcekey ...]
• Caso de uso: Track Unique Visitors
SCRIPTING
Ejecutar scripts LUA en lado servidor
• EVAL script numkeys key [key ...] arg [arg …]
• SCRIPT LOAD script
• EVALSHA sha1 numkeys key [key ...] arg [arg ...]
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
• …
Demo: Retwis
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
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/
Introducción a Redis: tipos de datos, operaciones y casos de uso

Más contenido relacionado

La actualidad más candente

La actualidad más candente (7)

Servidor de archivos
Servidor de archivosServidor de archivos
Servidor de archivos
 
Tecnologia web
Tecnologia webTecnologia web
Tecnologia web
 
Squid
SquidSquid
Squid
 
Instalación y configuración de un servidor dhcp en linux
Instalación y configuración de un servidor dhcp en linuxInstalación y configuración de un servidor dhcp en linux
Instalación y configuración de un servidor dhcp en linux
 
instalación y configuración de un servidor dhcp en linux
instalación y configuración de un servidor dhcp en linuxinstalación y configuración de un servidor dhcp en linux
instalación y configuración de un servidor dhcp en linux
 
Ayuda
AyudaAyuda
Ayuda
 
Dockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrolloDockeriza tu entorno de desarrollo
Dockeriza tu entorno de desarrollo
 

Destacado (20)

Diana vela
Diana velaDiana vela
Diana vela
 
Hotel gianna parco card
Hotel gianna parco cardHotel gianna parco card
Hotel gianna parco card
 
Linkedin Profile 2.0 Presentation
Linkedin Profile 2.0 PresentationLinkedin Profile 2.0 Presentation
Linkedin Profile 2.0 Presentation
 
Laranjondo
LaranjondoLaranjondo
Laranjondo
 
SCHC Overview 2013
SCHC Overview 2013SCHC Overview 2013
SCHC Overview 2013
 
Start
StartStart
Start
 
Sa
SaSa
Sa
 
Tizen web app について調べたよ
Tizen web app について調べたよTizen web app について調べたよ
Tizen web app について調べたよ
 
Cinquecento
CinquecentoCinquecento
Cinquecento
 
Marco Gelmetti
Marco GelmettiMarco Gelmetti
Marco Gelmetti
 
Broken hot sauce bottle attacker
Broken hot sauce bottle attackerBroken hot sauce bottle attacker
Broken hot sauce bottle attacker
 
Tecno2
Tecno2Tecno2
Tecno2
 
Victor harris bus 245 power point
Victor harris bus 245 power pointVictor harris bus 245 power point
Victor harris bus 245 power point
 
Public Speaking For Scientists
Public Speaking For ScientistsPublic Speaking For Scientists
Public Speaking For Scientists
 
ульяновск саммит
ульяновск саммитульяновск саммит
ульяновск саммит
 
Psikologi Industri Pengetahuan Konsumen
Psikologi Industri Pengetahuan KonsumenPsikologi Industri Pengetahuan Konsumen
Psikologi Industri Pengetahuan Konsumen
 
Live int-website-in-focus-webinar
Live int-website-in-focus-webinarLive int-website-in-focus-webinar
Live int-website-in-focus-webinar
 
Transitioning from an Early Investigator Award to the Coveted R01
Transitioning from an Early Investigator Award to the Coveted R01Transitioning from an Early Investigator Award to the Coveted R01
Transitioning from an Early Investigator Award to the Coveted R01
 
Car Trading Meeting
Car Trading MeetingCar Trading Meeting
Car Trading Meeting
 
Dia 1
Dia 1Dia 1
Dia 1
 

Similar a Introducción a Redis: tipos de datos, operaciones y casos de uso

Taller Redis
Taller RedisTaller Redis
Taller Redisbetabeers
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisDaniel Mazzini
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxEduardo Castro
 
In memory
In memoryIn memory
In memorySolidQ
 
Meetup: Spark + Kerberos
Meetup: Spark + KerberosMeetup: Spark + Kerberos
Meetup: Spark + KerberosStratio
 
Rendimiento y optimización de MySQL
Rendimiento y optimización de MySQLRendimiento y optimización de MySQL
Rendimiento y optimización de MySQLOnestic
 
Rendimiento y optimización de MySQL
Rendimiento y optimización de MySQLRendimiento y optimización de MySQL
Rendimiento y optimización de MySQLbetabeers
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...SolidQ
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 

Similar a Introducción a Redis: tipos de datos, operaciones y casos de uso (20)

Taller Redis
Taller RedisTaller Redis
Taller Redis
 
intro.ppt
intro.pptintro.ppt
intro.ppt
 
intro.ppt
intro.pptintro.ppt
intro.ppt
 
intro.ppt
intro.pptintro.ppt
intro.ppt
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redis
 
intro.pptx
intro.pptxintro.pptx
intro.pptx
 
Intro (1)
Intro (1)Intro (1)
Intro (1)
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
 
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
 
In memory
In memoryIn memory
In memory
 
Meetup spark + kerberos
Meetup spark + kerberosMeetup spark + kerberos
Meetup spark + kerberos
 
Meetup: Spark + Kerberos
Meetup: Spark + KerberosMeetup: Spark + Kerberos
Meetup: Spark + Kerberos
 
Rendimiento y optimización de MySQL
Rendimiento y optimización de MySQLRendimiento y optimización de MySQL
Rendimiento y optimización de MySQL
 
Rendimiento y optimización de MySQL
Rendimiento y optimización de MySQLRendimiento y optimización de MySQL
Rendimiento y optimización de MySQL
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
 
In-Memory OLTP en SQL Server 2014
In-Memory OLTP en SQL Server 2014In-Memory OLTP en SQL Server 2014
In-Memory OLTP en SQL Server 2014
 
Hadware y software
Hadware y softwareHadware y software
Hadware y software
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Proceso de señal
Proceso de señalProceso de señal
Proceso de señal
 
Certification Day
Certification DayCertification Day
Certification Day
 

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

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 

Último (20)

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 

Introducción a Redis: tipos de datos, operaciones y casos de uso

  • 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)
  • 10. BASIC • SET key value [EX seconds] [PX milliseconds] [NX|XX] • GET key • DEL key
  • 11. BASIC • EXISTS key • KEYS pattern • EXPIRE key seconds • MGET key [key …] • MSET key value [key value …]
  • 12. STRINGS • STRLEN KEY • APPEND key value
  • 13. ENTEROS • INCR key / INCRBY key increment • DECR key / DECRBY key increment
  • 14. HASHES • HSET key field value • HGET key field • HGETALL key • HDEL key field [field …]
  • 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. 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. 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. 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.”
  • 20. PUB/SUB • SUBSCRIBE channel [channel …] • UNSUBSCRIBE [channel [channel …]] • PUBLISH channel message
  • 22. TRANSACCIONES WATCH mykey val = GET mykey val = val + 1 MULTI SET mykey $val EXEC
  • 23. HyperLogLog • PFADD key element [element …] • PFCOUNT key [key …] • PFMERGE destkey sourcekey [sourcekey ...] • Caso de uso: Track Unique Visitors
  • 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. 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
  • 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/