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?
• REmote DIrectory Server
• 20k líneas en C++ de Salvatore Sanfilippo
• Open source
• Actualmente patrocinado por VMware
• Servidor de estructuras de datos en memoria
SET nombre “Daniel”
GET nombre
=> “Daniel”
¿Por qué redis?
• Es realmente muy rápida
• Single Thread
• Muchos clientes• Java
• Ruby
• Python
• Y como no … .NetLos ejemplos están con ServiceStack.Redis
install-package servicestack.redis
redis-benchmark -r 1000000 -q
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
IRedisTypedClient<TPoco> >
IRedisClient (string) >
IRedisNativeClient (raw byte[])
+ a
bstra
cto
-
¿Quién usa redis?
http://redis.io/topics/whos-using-redis
Las claves
• Son simple string
• Deben ser únicas
• Seudo nomenclatura• “objeto-tipo:id:campo”
• “nivelMayor\nivelInferior”
• Sin caracteres especiales
• Pueden expirar
String
• Tipo de dato simple
• {Json} u otro formato serializado
Operaciones
Get
Set
Append
key string
Caso #3 ¿Quien esta en línea?
userLive:201311081630
userLive:201311081631
userLive:201311081632
Usuarios online Mis amigosAmigos online
Por cada minuto, una clave
Caso #4 ReadModel en un CQRS
Batch
Updater
Read
Model
while(true)
{
calcularView();
}
escribir Quick
Updater
leer
Caso #4 ReadModel en un CQRS
Batch
Updater
Read
Model
while(true)
{
calcularView();
}
escribir Quick
Updater
leer
escribir
Pub/sub
Caso #4 ReadModel en un CQRS
Batch
Updater
Read
Model
while(true)
{
calcularView();
}
escribir Quick
Updater
leer
escribir
Pub/sub
Power by redis
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
Top Related