Your SlideShare is downloading. ×

Pon tus aplicaciones a 100 con redis

301

Published on

Sesion de la conferencia BcnDevCon 2013 …

Sesion de la conferencia BcnDevCon 2013
Redis
NoSQL

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
301
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Pon tus aplicaciones a 100 con Redis Daniel Mazzini Arquitecto @Tokiota
  • 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
  • 5. en memoria… Pero configurándolo puede persistir a disco…
  • 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[])
  • 8. ¿Quién usa redis? http://redis.io/topics/whos-using-redis
  • 9. Tipos de datos de valor
  • 10. Las claves • Son simple string • Deben ser únicas • Seudo nomenclatura • “objeto-tipo:id:campo” • “nivelMayornivelInferior” • Sin caracteres especiales • Pueden expirar
  • 11. String key string Operaciones Get Set • Tipo de dato simple • {Json} u otro formato serializado Append
  • 12. Lista Operaciones RPush key LRange LIndex LPop
  • 13. Lista Operaciones RPush key LRange A B C LIndex LPop
  • 14. Lista Operaciones RPush key LRange C A B C LIndex LPop
  • 15. Lista Operaciones RPush key LRange C A B C LIndex LPop LPop
  • 16. Lista Operaciones RPush key LRange C A B C LIndex LPop LPop RPop
  • 17. Set Operaciones B SAdd key A SRem C SMembers SIsMember
  • 18. Order Set Operaciones ZAdd C:1 ZRange ZRangeByScore key A:3 X:3 B:5 ZRem
  • 19. Hash key Operaciones Sub-clave 1 valor Sub-clave 2 valor HGet Sub-clave 3 valor HGetAll HSet HDel
  • 20. Contador • Contadores atómicos • INCR “user:id”
  • 21. Publicador / suscriptor
  • 22. Transacción
  • 23. Caso #1 Cache cache
  • 24. Caso #2 Page Counter • ActionFilter de MVC pageCounter Controller : Action 100
  • 25. Caso #2 Page Counter • ActionFilter de MVC pageCounter Controller : Action 100 Home : Index 5
  • 26. Caso #3 ¿Quien esta en línea? Usuarios online
  • 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(); }
  • 36. 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
  • 37. Conclusión • Redis = Rápido • Redis = Mas que Key-Value • El código de la sesión esta en: https://github.com/tokiota/BcnDevConRedis
  • 38. Preguntas?
  • 39. MERCI GRACIAS THANKS Resum Executiu 東京‘ TOKIOTA

×