Successfully reported this slideshow.
Memecached @ Codelovers Flavio Castelli
Cosa e' <ul><li>Key/value store
Memorizza tutto in RAM
“ Forgetting data is a feature”
No persistent storage </li></ul>
Cosa non e' <ul><li>Database
Http accelerator </li></ul>
Architettura <ul><li>Diviso in due parti: </li></ul><ul><ul><li>server
client </li></ul><li>Importante:  “intelligenza” divisa tra client e server. </li></ul>
Server <ul><li>Memorizza le coppie chiave/valore in una hash table interna
Cancella i dati memorizzati quando: </li></ul><ul><ul><li>Viene raggiunta la scadenza impostata dall'utente
Esaurisce la memoria a disposizione </li></ul><li>Non e' al corrente degli altri server: </li><ul><li>Non parla con loro
Non c'e' sincronizzazione
Upcoming SlideShare
Loading in …5
×

Memcached

742 views

Published on

Una breve introduzione a memecached

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Memcached

  1. 1. Memecached @ Codelovers Flavio Castelli
  2. 2. Cosa e' <ul><li>Key/value store
  3. 3. Memorizza tutto in RAM
  4. 4. “ Forgetting data is a feature”
  5. 5. No persistent storage </li></ul>
  6. 6. Cosa non e' <ul><li>Database
  7. 7. Http accelerator </li></ul>
  8. 8. Architettura <ul><li>Diviso in due parti: </li></ul><ul><ul><li>server
  9. 9. client </li></ul><li>Importante: “intelligenza” divisa tra client e server. </li></ul>
  10. 10. Server <ul><li>Memorizza le coppie chiave/valore in una hash table interna
  11. 11. Cancella i dati memorizzati quando: </li></ul><ul><ul><li>Viene raggiunta la scadenza impostata dall'utente
  12. 12. Esaurisce la memoria a disposizione </li></ul><li>Non e' al corrente degli altri server: </li><ul><li>Non parla con loro
  13. 13. Non c'e' sincronizzazione
  14. 14. Non ci sono messaggi in broadcast </li></ul><li>Non e' consapevole di cio' che viene memorizzato. </li></ul>
  15. 15. Client <ul><li>Disponibili per i principali linguaggi di programmazione
  16. 16. Ha la lista di tutti i server
  17. 17. Sceglie ogni volta il server su cui memorizzare i dati
  18. 18. Sa cosa fare quando un server non e' raggiungibile
  19. 19. Si preoccupa di serializzare i valori da memorizzare
  20. 20. Sa come recuperare i dati </li></ul>
  21. 21. Usi tipici <ul><li>Caching risultati delle query lente
  22. 22. Fragmented caching
  23. 23. Altro, dato che puo' memorizzare: </li></ul><ul><ul><li>Numeri
  24. 24. Stringhe
  25. 25. Liste
  26. 26. Dizionari
  27. 27. Oggetti </li></ul></ul>
  28. 28. Come scalare <ul><li>Aggiungere un nuovo server
  29. 29. Aggiornare la lista dei sever lato client
  30. 30. => Memoria totale = SUM(memoria singoli server) </li></ul>
  31. 31. Shit happens Cosa succede se uno o piu' server cadono? <ul>=> Diminuzione temporanea delle hit </ul>
  32. 32. Limiti <ul><li>Dimensione massima chiave: 250 Bytes
  33. 33. Dimensione massima value: 1 Megabyte
  34. 34. Max expire time: 30 giorni
  35. 35. Modificare la lista dei server puo' invalidare tutta la cache </li></ul>
  36. 36. SUSE Studio <ul><li>Ruby on Rails
  37. 37. 191000+ utenti
  38. 38. ~670 build giornaliere
  39. 39. 3 application server
  40. 40. 4 istanze di memcached (limitate ad 1GB per istanza) </li></ul>
  41. 41. Domande
  42. 42. Riferimenti <ul><li>memcached: http://code.google.com/p/memcached/
  43. 43. “ Using memcached: How to scale your website easily” by Josef Finsted – The pragmatic Bookshelf </li></ul>

×