Skip to content

Latest commit

 

History

History
32 lines (21 loc) · 1.53 KB

FAQ.rdoc

File metadata and controls

32 lines (21 loc) · 1.53 KB

Memcache-client FAQ

Does memcache-client work with Ruby 1.9?

Yes, Ruby 1.9 is supported. The test suite should pass completely on 1.8.6 and 1.9.1.

I’m seeing “execution expired” or “time’s up!” errors, what’s that all about?

memcache-client 1.6.x+ now has socket operations timed out by default. This is to prevent the Ruby process from hanging if memcached or starling get into a bad state, which has been seen in production by both 37signals and FiveRuns. The default timeout is 0.5 seconds, which should be more than enough time under normal circumstances. It’s possible to hit a storm of concurrent events which cause this timer to expire: a large Ruby VM can cause the GC to take a while, while also storing a large (500k-1MB value), for example.

You can increase the timeout or disable them completely with the following configuration:

Rails:
config.cache_store = :mem_cache_store, 'server1', 'server2', { :timeout => nil } # no timeout

native:
MemCache.new ['server1', 'server2'], { :timeout => 1.0 } # 1 second timeout

Isn’t Evan Weaver’s memcached gem faster?

The latest version of memcached-client is anywhere from 33% to 100% slower than memcached in various benchmarks. Keep in mind this means that 10,000 get requests take 1.8 sec instead of 1.2 seconds. In practice, memcache-client is unlikely to be a bottleneck in your system but there is always going to be an overhead to pure Ruby. memcache-client does have the advantage of built-in integration into Rails and should work on non-MRI platforms: JRuby, MacRuby, etc.