SlideShare una empresa de Scribd logo
1 de 39
Pon tus aplicaciones a 100 con Redis

Daniel Mazzini

Arquitecto @Tokiota
Acerca de ..
• Esposo y padre
• Arquitecto en @tokiota (estrenando Gold Partner)

東京‘

TOKIOTA
NOSQL … el porque
• Base de datos relacionales:
• Gran cantidad de datos
• Concurrencia / bloqueo
• Schemas vs Agile
• Coste de licenciamientos

• Modelos de NoSQL
• Key – Value
¿Qué es redis?
SET nombre “Daniel”
• REmote DIrectory Server
• 20k líneas en C++ de Salvatore Sanfilippo GET nombre
=> “Daniel”
• Open source
• Actualmente patrocinado por VMware
• Servidor de estructuras de datos en memoria
en memoria…

Pero configurándolo
puede persistir a disco…
¿Por qué redis?
• Es realmente muy rápida
• Single Thread
• Muchos clientes
•
•
•
•

Java
Ruby
Python
Y como no … .Net

redis-benchmark -r 1000000 -q

Los ejemplos están con ServiceStack.Redis

install-package servicestack.redis
Sobre servicestack.redis

• Tienes al menos 3 interfaz para el servicio de Redis

• IRedisNativeClient tienes los mismos nombres de métodos que
Redis
• Puedes usar la documentación de los comandos del propio sitio de redis

+ abstracto -

IRedisTypedClient<TPoco> >
IRedisClient (string) >
IRedisNativeClient (raw byte[])
¿Quién usa redis?

http://redis.io/topics/whos-using-redis
Tipos de datos de valor
Las claves
• Son simple string
• Deben ser únicas
• Seudo nomenclatura

• “objeto-tipo:id:campo”
• “nivelMayornivelInferior”

• Sin caracteres especiales
• Pueden expirar
String

key

string

Operaciones
Get
Set

• Tipo de dato simple
• {Json} u otro formato serializado

Append
Lista
Operaciones
RPush
key

LRange
LIndex
LPop
Lista
Operaciones
RPush
key

LRange
A

B

C

LIndex
LPop
Lista
Operaciones
RPush
key

LRange
C

A

B

C

LIndex
LPop
Lista
Operaciones
RPush
key

LRange
C

A

B

C

LIndex
LPop

LPop
Lista
Operaciones
RPush
key

LRange
C

A

B

C

LIndex
LPop

LPop

RPop
Set

Operaciones

B

SAdd
key

A

SRem
C

SMembers
SIsMember
Order Set
Operaciones
ZAdd
C:1

ZRange
ZRangeByScore

key

A:3
X:3
B:5

ZRem
Hash
key

Operaciones

Sub-clave 1

valor

Sub-clave 2

valor

HGet

Sub-clave 3

valor

HGetAll

HSet

HDel
Contador
• Contadores atómicos
• INCR “user:id”
Publicador / suscriptor
Transacción
Caso #1 Cache

cache
Caso #2 Page Counter
• ActionFilter de MVC

pageCounter

Controller : Action

100
Caso #2 Page Counter
• ActionFilter de MVC

pageCounter

Controller : Action

100

Home : Index

5
Caso #3 ¿Quien esta en línea?

Usuarios online
Caso #3 ¿Quien esta en línea?

Usuarios online

Mis amigos
Caso #3 ¿Quien esta en línea?

Usuarios online

Amigos online

Mis amigos
Caso #3 ¿Quien esta en línea?

Usuarios online

Amigos online

Mis amigos

userLive:201311081630
userLive:201311081631
userLive:201311081632

Por cada minuto, una clave
Caso #4 ReadModel en un CQRS

Batch
Updater

while(true)
{
calcularView();
}
Caso #4 ReadModel en un CQRS

Batch
Updater
Read
Model

while(true)
{
calcularView();
}
Caso #4 ReadModel en un CQRS

Batch
Updater

leer
Read
Model

while(true)
{
calcularView();
}
Caso #4 ReadModel en un CQRS

Quick
Updater

escribir

Batch
Updater

leer
Read
Model

while(true)
{
calcularView();
}
Caso #4 ReadModel en un CQRS

Quick
Updater

escribir

escribir

Pub/sub
Batch
Updater

leer
Read
Model

while(true)
{
calcularView();
}
Caso #4 ReadModel en un CQRS

Quick
Updater

escribir

escribir

Pub/sub
Batch
Updater

leer
Read
Model

Power by redis 

while(true)
{
calcularView();
}
Caso #5 Autocomplete
ZADD “P” 0
ZADD “PL” 0
ZADD “PLA” 0
ZADD “PLAN” 0
ZADD “PLAN*” 0
ZADD “PLANE” 0
ZADD “PLANET” 0
ZADD “PLANETA*” 0
ZADD “PLANI” 0
ZADD “PLANIF” 0
ZADD “PLANIFI” 0
ZADD “PLANIFIC” 0
ZADD “PLANIFICA” 0
ZADD “PLANIFICAD” 0
ZADD “PLANIFICADO” 0
ZADD “PLANIFICADOR*” 0
Conclusión
• Redis = Rápido
• Redis = Mas que Key-Value
• El código de la sesión esta en:
https://github.com/tokiota/BcnDevConRedis
Preguntas?
MERCI
GRACIAS
THANKS

Resum Executiu

東京‘

TOKIOTA

Más contenido relacionado

Similar a Pon tus aplicaciones a 100 con redis

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 

Similar a Pon tus aplicaciones a 100 con redis (20)

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016Conociendo los cambios de SQL Server a partir de 2012 a 2016
Conociendo los cambios de SQL Server a partir de 2012 a 2016
 
Introducción R - Primeros pasos
Introducción R - Primeros pasosIntroducción R - Primeros pasos
Introducción R - Primeros pasos
 
Desarrollo sistemas web con PHP, HTML5, GOOGLE MAPS
Desarrollo sistemas web con PHP, HTML5, GOOGLE MAPSDesarrollo sistemas web con PHP, HTML5, GOOGLE MAPS
Desarrollo sistemas web con PHP, HTML5, GOOGLE MAPS
 
Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019
 
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...
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
Linq - Introducción
Linq - IntroducciónLinq - Introducción
Linq - Introducción
 
Taller de c sharp
Taller de c sharpTaller de c sharp
Taller de c sharp
 
Servicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWSServicios de Bases de Datos de AWS
Servicios de Bases de Datos de AWS
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
 
Grails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta cargaGrails, opción real y escalable para sitios web de alta carga
Grails, opción real y escalable para sitios web de alta carga
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
Data Platform de BEEVA
Data Platform de BEEVAData Platform de BEEVA
Data Platform de BEEVA
 
Redis: no solo una caché
Redis: no solo una cachéRedis: no solo una caché
Redis: no solo una caché
 
Sistema de Bases de Datos AWS
Sistema de Bases de Datos AWSSistema de Bases de Datos AWS
Sistema de Bases de Datos AWS
 
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
Buenas prácticas de codificación para capas de acceso a datos de aplicaciones...
 
Web cast de optimización Sql Server - Arquitectura
Web cast de optimización Sql Server - ArquitecturaWeb cast de optimización Sql Server - Arquitectura
Web cast de optimización Sql Server - Arquitectura
 
Fundamentos de Microsoft .NET y C#
Fundamentos de Microsoft .NET y C#Fundamentos de Microsoft .NET y C#
Fundamentos de Microsoft .NET y C#
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Ú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
 
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.
 
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
 
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...
 
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
 
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
 
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
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Pon tus aplicaciones a 100 con redis