Seit einiger Zeit gibt es eine in C geschriebene Memcached-Library, die deutlich schneller funktionieren soll, als z. B. die native Anbindung in Rails. Da bei der Migration nach Rails 2.3 ohnehin ein paar Fehler bei der Standardanbindung aufgetreten sind, war das ein guter Zeitpunkt für mich, die Alternative zu testen.
Leider ließen sich die aktuellen Versionen (März 2009) nicht zusammen kompilieren, und so musste ich auf etwas ältere zurückgreifen, die nun aber fluppen. Benötigt werden die libmemcached, das libmemcached_store-Plugin, das den Defaultmechanismus in Rails ersetzt und etwas Konfiguration:
Setup
wget http://blog.evanweaver.com/files/libmemcached-0.25.14.tar.gz tar -xzvf libmemcached-0.25.14.tar.gz cd libmemcached-0.25.14 ./configure && make && make install wget http://blog.evanweaver.com/files/memcached-0.13.gem gem install memcached-0.13.gem
Das Plugin:
script/plugin install git://github.com/cheald/libmemcached_store.git
Konfiguration
Zumindest muss das Plugin in der environment.rb aktiviert werden:
config.cache_store = :libmemcached_store |
Wer es etwas ausgefallener möchte, kann für Sessions und Fragmente separate Server ansprechen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
GENERAL_CACHE_SERVERS = ["localhost:11211"] GENERAL_CACHE_OPTIONS = {:untaint => true} SESSION_CACHE_SERVERS = ["localhost:11211"] SESSION_CACHE_OPTIONS = { :prefix_key => "session:marsxpress" } SESSION_MEMCACHE_CLIENT = Memcached.new(SESSION_CACHE_SERVERS, SESSION_CACHE_OPTIONS) config.cache_store = :libmemcached_store, GENERAL_CACHE_SERVERS, GENERAL_CACHE_OPTIONS config.action_controller.session_store = :libmemcached_store config.action_controller.session = { :cache => SESSION_MEMCACHE_CLIENT, :expires_after => 86400 } |
andere Funktionen
Das libmemcached-Paket bringt einige Tools mit, mit deren Hilfe man sich die Betriebstemperatur seiner Cachingserver ansehen kann:
- memcat – Copy the value of a key to standard output
- memflush – Flush the contents of your servers
- memrm – Remove a key(s) from the serrver
- memcp – Copy files to a memached server
- memstat – Dump the stats of your servers to standard output
- memslap – Generate testing loads on a memcached cluster