SlideShare a Scribd company logo
1 of 27
Download to read offline
REDIS NO ES
SOLO UNA
CACHÉ
¿QUÉ VAMOS A VER HOY?
¿Qué es Redis?
Operaciones y tipos de datos
Retwis in C#
ALGUNOS DATOS
Redis = REmote DIctionary Server
La primera release en 2009
Open Source, Licencia BSD
La versión más reciente: 3.0
Escrito en C
Tiene librerías para +30 lenguajes
Buena documentación
Sistema de almacenamiento
y caché avanzado que usa datos de tipo
clave - valor
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 (la CPU no será el cuello de botella)
 Un sistema normal Linux puede enviar 500k requests/segundo
 El límite de almacenamiento es la memoria disponible
 máx. 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 multihilo
 Velocidad similar (en local)
OPERACIONES y
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 …]
CADENAS
 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).”
Para conseguir el 99% de precision,
se necesitan solo 16 Kb.
HyperLogLog
 PFADD key element [element …]
 PFCOUNT key [key …]
 PFMERGE destkey sourcekey [sourcekey ...]
 Caso de uso: Track Unique Visitors
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
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
 Colas: BLPOP y LPUSH
 Textos auto-completables: ZADD, ZRANK y ZRANGE
 Almacenar información que caduca: EXPIRE
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
 A basic redis client for .NET
https://github.com/fernandoescolar/Tokiota.Redis
 Documentación Redis
http://redis.io/documentation
 ServiceStack
https://servicestack.net
 Ejemplo de uso Redis Bitmaps
http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps
www.catdotnet.net

More Related Content

What's hot

Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Alejandro E Brito Monedero
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
Sobreviviendo commando style
Sobreviviendo commando styleSobreviviendo commando style
Sobreviviendo commando styleJorge Ortiz
 
Permisos y ficheros en linux
Permisos y ficheros en linuxPermisos y ficheros en linux
Permisos y ficheros en linuxelkinvillasz
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]RootedCON
 
Mejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - Caceres
Mejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - CaceresMejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - Caceres
Mejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - CaceresDavid Gil Sánchez
 
ownCloud en Linux - Bilal Jebari
ownCloud en Linux - Bilal JebariownCloud en Linux - Bilal Jebari
ownCloud en Linux - Bilal Jebaribilaljbr
 
CONFIGURACION DEL DNS
CONFIGURACION DEL DNSCONFIGURACION DEL DNS
CONFIGURACION DEL DNSmigmorbus1
 
ROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureJavier Lafora Rey
 

What's hot (20)

Hydra
HydraHydra
Hydra
 
Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?Así que pusiste MongoDB. Dime ¿cómo lo administras?
Así que pusiste MongoDB. Dime ¿cómo lo administras?
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
Sobreviviendo commando style
Sobreviviendo commando styleSobreviviendo commando style
Sobreviviendo commando style
 
Permisos y ficheros en linux
Permisos y ficheros en linuxPermisos y ficheros en linux
Permisos y ficheros en linux
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Tips mysql
Tips mysqlTips mysql
Tips mysql
 
Tema4[php]
Tema4[php]Tema4[php]
Tema4[php]
 
Mejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - Caceres
Mejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - CaceresMejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - Caceres
Mejora la experiencia de búsquedas con SOLR - Sesión Drupal Camp 2013 - Caceres
 
ownCloud en Linux - Bilal Jebari
ownCloud en Linux - Bilal JebariownCloud en Linux - Bilal Jebari
ownCloud en Linux - Bilal Jebari
 
Instalacion de dns
Instalacion de dnsInstalacion de dns
Instalacion de dns
 
Trabajo ejemplo hafs-v1b
Trabajo ejemplo hafs-v1bTrabajo ejemplo hafs-v1b
Trabajo ejemplo hafs-v1b
 
CONFIGURACION DEL DNS
CONFIGURACION DEL DNSCONFIGURACION DEL DNS
CONFIGURACION DEL DNS
 
Ataque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffingAtaque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffing
 
php y mysql
php y mysqlphp y mysql
php y mysql
 
Bd practica 1.10
Bd practica 1.10Bd practica 1.10
Bd practica 1.10
 
Habilitar Korn Shell Linux
Habilitar Korn Shell LinuxHabilitar Korn Shell Linux
Habilitar Korn Shell Linux
 
Mongo db course administration
Mongo db course   administrationMongo db course   administration
Mongo db course administration
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
ROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureROA - Resource Oriented Architecture
ROA - Resource Oriented Architecture
 

Similar to Redis no es solo una caché

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
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detallePTA Records
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalleLupiita Paniagua
 
Clase 3 gestion entrada salida
Clase 3 gestion entrada salidaClase 3 gestion entrada salida
Clase 3 gestion entrada salidaUPTM
 
Comandos Basicos De Linux
Comandos Basicos De LinuxComandos Basicos De Linux
Comandos Basicos De LinuxUsa
 
Unidad 7: Modo consola: DOS.
Unidad 7: Modo consola: DOS.Unidad 7: Modo consola: DOS.
Unidad 7: Modo consola: DOS.carmenrico14
 
Comandos cmd para soporte tecnico
Comandos cmd para soporte tecnicoComandos cmd para soporte tecnico
Comandos cmd para soporte tecnicoGeovanni Lozano
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalledsolana
 
Fuerza bruta con hydra y montando un ssh
Fuerza bruta con hydra y montando un sshFuerza bruta con hydra y montando un ssh
Fuerza bruta con hydra y montando un sshTensor
 
Rfc 2229 un servidor de protocolo diccionario
Rfc 2229   un servidor de protocolo diccionarioRfc 2229   un servidor de protocolo diccionario
Rfc 2229 un servidor de protocolo diccionariomacpepe
 

Similar to Redis no es solo una caché (20)

Redis: no solo una caché
Redis: no solo una cachéRedis: no solo una caché
Redis: no solo una caché
 
I S A
I S AI S A
I S A
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Introduccion clips
Introduccion clipsIntroduccion clips
Introduccion clips
 
Manualnmapesp
ManualnmapespManualnmapesp
Manualnmapesp
 
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
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 
Exposicion
ExposicionExposicion
Exposicion
 
Clase 3 gestion entrada salida
Clase 3 gestion entrada salidaClase 3 gestion entrada salida
Clase 3 gestion entrada salida
 
Comandos Basicos De Linux
Comandos Basicos De LinuxComandos Basicos De Linux
Comandos Basicos De Linux
 
Unidad 7: Modo consola: DOS.
Unidad 7: Modo consola: DOS.Unidad 7: Modo consola: DOS.
Unidad 7: Modo consola: DOS.
 
Comandos cmd para soporte tecnico
Comandos cmd para soporte tecnicoComandos cmd para soporte tecnico
Comandos cmd para soporte tecnico
 
Puertos tcp mas usados
Puertos tcp mas usadosPuertos tcp mas usados
Puertos tcp mas usados
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 
01 alp u3
01 alp u301 alp u3
01 alp u3
 
Fuerza bruta con hydra y montando un ssh
Fuerza bruta con hydra y montando un sshFuerza bruta con hydra y montando un ssh
Fuerza bruta con hydra y montando un ssh
 
Resumen scripts unix
Resumen scripts unixResumen scripts unix
Resumen scripts unix
 
Rfc 2229 un servidor de protocolo diccionario
Rfc 2229   un servidor de protocolo diccionarioRfc 2229   un servidor de protocolo diccionario
Rfc 2229 un servidor de protocolo diccionario
 

More from Alex Casquete

Functional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic ConceptsFunctional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic ConceptsAlex Casquete
 
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store appsWorking with disconnected data in Windows Store apps
Working with disconnected data in Windows Store appsAlex Casquete
 
45 F#antastic minutes!
45 F#antastic minutes!45 F#antastic minutes!
45 F#antastic minutes!Alex Casquete
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es VietnamAlex Casquete
 
Aplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAlex Casquete
 
Entity Framework 4 desde cero
Entity Framework 4 desde ceroEntity Framework 4 desde cero
Entity Framework 4 desde ceroAlex Casquete
 

More from Alex Casquete (6)

Functional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic ConceptsFunctional Programming with F#: Getting Started & Basic Concepts
Functional Programming with F#: Getting Started & Basic Concepts
 
Working with disconnected data in Windows Store apps
Working with disconnected data in Windows Store appsWorking with disconnected data in Windows Store apps
Working with disconnected data in Windows Store apps
 
45 F#antastic minutes!
45 F#antastic minutes!45 F#antastic minutes!
45 F#antastic minutes!
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
Aplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a Aspectos
 
Entity Framework 4 desde cero
Entity Framework 4 desde ceroEntity Framework 4 desde cero
Entity Framework 4 desde cero
 

Redis no es solo una caché

  • 1. REDIS NO ES SOLO UNA CACHÉ
  • 2. ¿QUÉ VAMOS A VER HOY? ¿Qué es Redis? Operaciones y tipos de datos Retwis in C#
  • 3. ALGUNOS DATOS Redis = REmote DIctionary Server La primera release en 2009 Open Source, Licencia BSD La versión más reciente: 3.0 Escrito en C Tiene librerías para +30 lenguajes Buena documentación
  • 4. Sistema de almacenamiento y caché avanzado que usa datos de tipo clave - valor
  • 5. Una clave puede contener strings, hashes, lists, sets, sorted sets, bitmaps y hyperloglogs
  • 6. 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 (la CPU no será el cuello de botella)  Un sistema normal Linux puede enviar 500k requests/segundo  El límite de almacenamiento es la memoria disponible  máx. 232 keys
  • 7. 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 multihilo  Velocidad similar (en local)
  • 9. BASIC  SET key value [EX seconds] [PX milliseconds] [NX|XX]  GET key  DEL key
  • 10. BASIC  EXISTS key  KEYS pattern  EXPIRE key seconds  MGET key [key …]  MSET key value [key value …]
  • 11. CADENAS  STRLEN KEY  APPEND key value
  • 12. ENTEROS  INCR key / INCRBY key increment  DECR key / DECRBY key increment
  • 13. HASHES  HSET key field value  HGET key field  HGETALL key  HDEL key field [field …]
  • 14. 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
  • 15. 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 …]
  • 16. OPERACIONES CON SETS  SINTER key [key …] / SINTERSTORE destination key [key …]  SDIFF key [key …] / SDIFFSTORE destination key [key …]  SUNION key [key …] / SUNIONSTORE destination key [key …]
  • 17. 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
  • 18. HYPERLOGLOG “Hyperloglog es una técnica aproximada para calcular el número de entradas distintas en un conjunto (cardinalidad).” Para conseguir el 99% de precision, se necesitan solo 16 Kb.
  • 19. HyperLogLog  PFADD key element [element …]  PFCOUNT key [key …]  PFMERGE destkey sourcekey [sourcekey ...]  Caso de uso: Track Unique Visitors
  • 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. SCRIPTING Ejecutar scripts LUA en lado servidor  EVAL script numkeys key [key ...] arg [arg …]  SCRIPT LOAD script  EVALSHA sha1 numkeys key [key ...] arg [arg ...]
  • 24. 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  Colas: BLPOP y LPUSH  Textos auto-completables: ZADD, ZRANK y ZRANGE  Almacenar información que caduca: EXPIRE
  • 25. 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
  • 26. MÁS INFORMACIÓN  A basic redis client for .NET https://github.com/fernandoescolar/Tokiota.Redis  Documentación Redis http://redis.io/documentation  ServiceStack https://servicestack.net  Ejemplo de uso Redis Bitmaps http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps

Editor's Notes

  1. Redis es un Sistema de almacenamiento y caché avanzado que usa datos de tipo CLAVE-VALOR.
  2. Se le denomina servidor de estructura de datos ya que una clave puede contener strings, hashes, lists, sets, sorted sets, bitmaps y hyperloglogs
  3. 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.