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

< 5, >= 3
< 5, >= 3
>= 0
>= 0
>= 0
>= 0
>= 0

Runtime

~> 1.8.0
 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.