No commit activity in last 3 years
No release in over 3 years
An ActiveSupport cache store that uses the C-based libmemcached client through Evan Weaver's Ruby/SWIG wrapper, memcached. libmemcached is fast, lightweight, and supports consistent hashing, non-blocking IO, and graceful server failover.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

LibmemcachedStore

An ActiveSupport cache store that uses the fast, C-based, libmemcached client memcached. It is the fastest ruby memcached client, lightweight, supports consistent hashing, non-blocking IO, and graceful server failover.

Installation

# Gemfile
gem 'libmemcached_store'

Usage

This is a drop-in replacement for the memcache store that ships with Rails.

# config/environments/*.rb
config.cache_store = :libmemcached_store

If no servers are specified, localhost is assumed. You can specify a list of server addresses, either as hostnames or IP addresses, with or without a port designation. If no port is given, 11211 is assumed:

config.cache_store = :libmemcached_store, %w(cache-01 cache-02 127.0.0.1:11212)

Standard Rails cache store options can be used

config.cache_store = :libmemcached_store, '127.0.0.1:11211', {compress: true, expires_in: 3600}

More advanced options can be passed directly to the client

config.cache_store = :libmemcached_store, '127.0.0.1:11211', {client: { binary_protocol: true, no_block: true }}

You can also use :libmemcached_store to store your application sessions

require 'action_dispatch/session/libmemcached_store'
config.session_store :libmemcached_store, namespace: '_session', expire_after: 1800

You can use :libmemcached_local_store if you want a local in-memory cache for each request

config.cache_store :libmemcached_local_store

Increment / Decrement only work on raw values:

Rails.cache.write 'x', '1', raw: true
Rails.cache.increment 'x' # => 2
Rails.cache.decrement 'x' # => 1

Performance

Used with Rails, libmemcached_store is at least 1.5x faster than dalli. See BENCHMARKS for details

Props

Thanks to Brian Aker (http://tangent.org) for creating libmemcached, and Evan Weaver (http://blog.evanweaver.com) for the Ruby wrapper.