Method: Dalli::Client#initialize

Defined in:

#initialize(servers = nil, options = {}) ⇒ Client

Dalli::Client is the main class which developers will use to interact with the memcached server. Usage:['localhost:11211:10',
                  failover: true, expires_in: 300)

servers is an Array of “host:port:weight” where weight allows you to distribute cache unevenly. Both weight and port are optional. If you pass in nil, Dalli will use the MEMCACHE_SERVERS environment variable or default to ‘localhost:11211’ if it is not present. Dalli also supports the ability to connect to Memcached on localhost through a UNIX socket. To use this functionality, use a full pathname (beginning with a slash character ‘/’) in place of the “host:port” pair in the server configuration.


  • :namespace - prepend each key with this value to provide simple namespacing.

  • :failover - if a server is down, look for and store values on another server in the ring. Default: true.

  • :threadsafe - ensure that only one thread is actively using a socket at a time. Default: true.

  • :expires_in - default TTL in seconds if you do not pass TTL as a parameter to an individual operation, defaults

    to 0 or forever.
  • :compress - if true Dalli will compress values larger than compression_min_size bytes before sending them

    to memcached.  Default: true.
  • :compression_min_size - the minimum size (in bytes) for which Dalli will compress values sent to Memcached.

    Defaults to 4K.
  • :serializer - defaults to Marshal

  • :compressor - defaults to Dalli::Compressor, a Zlib-based implementation

  • :cache_nils - defaults to false, if true Dalli will not treat cached nil values as ‘not found’ for

    #fetch operations.
  • :digest_class - defaults to Digest::MD5, allows you to pass in an object that responds to the hexdigest method,

    useful for injecting a FIPS compliant hash object.
  • :protocol - one of either :binary or :meta, defaulting to :binary. This sets the protocol that Dalli uses

    to communicate with memcached.

# File 'lib/dalli/client.rb', line 49

def initialize(servers = nil, options = {})
  @normalized_servers = ::Dalli::ServersArgNormalizer.normalize_servers(servers)
  @options = normalize_options(options)
  @key_manager =
  @ring = nil