Este documento presenta Redis, una base de datos en memoria de código abierto que ofrece un rendimiento extremadamente rápido. Redis admite varios tipos de datos como cadenas, listas, conjuntos y hashes, y se utiliza comúnmente para el almacenamiento en caché, contadores, colas y modelado de datos. El documento proporciona ejemplos de cómo Redis puede usarse para aplicaciones como recuento de páginas, usuarios en línea, autocompletar y modelado de datos CQRS. En general, Redis es una opción rápida y flexible
2. Acerca de ..
• Esposo y padre
• Arquitecto en @tokiota (estrenando Gold Partner)
東京‘
TOKIOTA
3. NOSQL … el porque
• Base de datos relacionales:
• Gran cantidad de datos
• Concurrencia / bloqueo
• Schemas vs Agile
• Coste de licenciamientos
• Modelos de NoSQL
• Key – Value
4. ¿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
6. ¿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
7. 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[])
10. Las claves
• Son simple string
• Deben ser únicas
• Seudo nomenclatura
• “objeto-tipo:id:campo”
• “nivelMayornivelInferior”
• Sin caracteres especiales
• Pueden expirar
27. Caso #3 ¿Quien esta en línea?
Usuarios online
Mis amigos
28. Caso #3 ¿Quien esta en línea?
Usuarios online
Amigos online
Mis amigos
29. Caso #3 ¿Quien esta en línea?
Usuarios online
Amigos online
Mis amigos
userLive:201311081630
userLive:201311081631
userLive:201311081632
Por cada minuto, una clave
30. Caso #4 ReadModel en un CQRS
Batch
Updater
while(true)
{
calcularView();
}
31. Caso #4 ReadModel en un CQRS
Batch
Updater
Read
Model
while(true)
{
calcularView();
}
32. Caso #4 ReadModel en un CQRS
Batch
Updater
leer
Read
Model
while(true)
{
calcularView();
}
33. Caso #4 ReadModel en un CQRS
Quick
Updater
escribir
Batch
Updater
leer
Read
Model
while(true)
{
calcularView();
}
34. Caso #4 ReadModel en un CQRS
Quick
Updater
escribir
escribir
Pub/sub
Batch
Updater
leer
Read
Model
while(true)
{
calcularView();
}
35. Caso #4 ReadModel en un CQRS
Quick
Updater
escribir
escribir
Pub/sub
Batch
Updater
leer
Read
Model
Power by redis
while(true)
{
calcularView();
}