Your SlideShare is downloading. ×
Caching for Cash: Caching
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Caching for Cash: Caching


Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. CACHING FOR CASH - CACHING Scott MacVicar php|works 2008
  • 2. WHY CACHE? Reduce memory usage Reduce processing time Reduce network traffic Reduce disk access
  • 3. CACHING OPTIONS Flat file RAM disk Database Memcache APC Script level
  • 4. WHAT TO CACHE? External resources Large result sets Static data Sessions
  • 5. FLAT FILE CACHE Write data out to a local file Config files from Database or XML Remote resources store locally Output buffering to local file
  • 6. CACHING FILES PEAR::Cache_Lite Zend_Cache in Zend Framework var_export in PHP
  • 7. RAM DISK Mount some memory as disk space Used when IO actions can’t be avoided Non resizable on the fly
  • 8. LIGHTTPD + PHP Lua is a scripting language in lighttpd Use PHP to write out file to disk Have Lua look at the modified time of the file, if within the limit serve else execute PHP
  • 9. MEMCACHE Origins within Livejournal Used by Facebook, Youtube, Wikipedia and digg Caching daemon, no persistence Stores key / value pairs
  • 10. FACEBOOK EXAMPLE 200 dedicated memcache servers Each 16GB quad-core amd64 3TB memcache data
  • 11. MEMCACHE Slab Allocator Libevent based (non-blocking) Simple Protocol Server is just a hash table No authentication or self awareness
  • 12. MEMCACHE CLIENT Clients provide key and value Responsible for serialising any value Compress data
  • 13. SERVER PROTOCOL set/replace/add get append/prepend increment/decrement compare and swap
  • 14. HASHING Key is hashed into a value Modulous then applied which is the number of the servers Server is then picked and stored If one server drops out you only lose a fraction of the keys
  • 15. MEMCACHE LIMITS Key Size is 250 bytes Data Size is 1 megabyte 32bit/64bit memory limit No Replication across cluster
  • 16. MEMCACHE CLEANING UP Uses Least Recently Used Algorithm Looks for the oldest item and removes TTL also applies to key / value pairs
  • 17. SIMPLE USAGE Fetch from memcache If there return Else calculate, store in cache and return
  • 18. WHERE TO RUN? Any server works No need for matching size Low CPU usage
  • 19. MEMCACHE + PHP PECL extension using custom connection pecl install memcache Provides MemcachePool and Memcache INI settings to change hash strategy, function and protocol.
  • 21. MEMCACHE ACTIONS Add - only if the key doesn’t exist Set - will add or update key Replace - only if the key already exists
  • 22. MEMCACHE TASK Open Terminal in VMWare Image and run sudo service memcached start Try using memcache to set, get and add values Try setting a value using the Time To Live parameter Ask questions :-)
  • 23. MEMCACHEDB Persistent key/value storage system BDB used for persitence Compatible with Memcache protocol
  • 24. MEMCACHEDB CAVEATS No expiration Isn’t a replacement for memcache
  • 25. APC Provides OPCode caching in PHP Shared memory for storage APC is only on the local server No network overhead from TCP/IP
  • 26. APC Input Tokenizer Parser APC Compiler Store Opcodes Executor
  • 27. APC SAMPLE
  • 28. CACHE LAYERING Disk / APC Memcache Database Fetch from APC locally Fetch from Memcache, add to APC Finally fetch from the original source and store back in Memcache
  • 29. APC USE CASES Should always use it to cache opcode of files Small but frequently accessed things You only have one server
  • 30. APC TASK Try storing classes or arrays in APC Use the Time To Live APC supports an array for keys in apc_get, fetch multiple values
  • 31. SQLITE Local node storage of filesystem Cache result sets from remote database In memory database
  • 32. DATABASE QUERY CACHING Rely on MySQL to do the query caching Doesn’t quite work though :-( Invalidation of cache happens easily
  • 33. ALTERNATIVE DATABASE CACHING Store the result set from the database using another caching software Hash query as a key value Extend your DB layer to add this transparently?
  • 34. CACHING TIPS Pre-heat the cache Use multiple levels of cache Cache even dynamic data for short times serialize() is slow
  • 35. QUESTIONS?