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

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

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?