README.md in dalli-2.7.10 vs README.md in dalli-2.7.11

- old
+ new

@@ -1,36 +1,16 @@ -Dalli [![Build Status](https://secure.travis-ci.org/petergoldstein/dalli.svg)](http://travis-ci.org/petergoldstein/dalli) [![Dependency Status](https://gemnasium.com/petergoldstein/dalli.svg)](https://gemnasium.com/petergoldstein/dalli) [![Code Climate](https://codeclimate.com/github/petergoldstein/dalli.svg)](https://codeclimate.com/github/petergoldstein/dalli) +Dalli [![Build Status](https://secure.travis-ci.org/petergoldstein/dalli.svg)](http://travis-ci.org/petergoldstein/dalli) ===== Dalli is a high performance pure Ruby client for accessing memcached servers. It works with memcached 1.4+ only as it uses the newer binary protocol. It should be considered a replacement for the memcache-client gem. The name is a variant of Salvador Dali for his famous painting [The Persistence of Memory](http://en.wikipedia.org/wiki/The_Persistence_of_Memory). ![Persistence of Memory](http://www.virtualdali.com/assets/paintings/31PersistenceOfMemory.jpg) Dalli's initial development was sponsored by [CouchBase](http://www.couchbase.com/). Many thanks to them! - -Design ------------- - -Mike Perham decided to write Dalli after maintaining memcache-client for two years for a few specific reasons: - - 0. The code is mostly old and gross. The bulk of the code is a single 1000 line .rb file. - 1. It has a lot of options that are infrequently used which complicate the codebase. - 2. The implementation has no single point to attach monitoring hooks. - 3. Uses the old text protocol, which hurts raw performance. - -So a few notes. Dalli: - - 0. uses the exact same algorithm to choose a server so existing memcached clusters with TBs of data will work identically to memcache-client. - 1. is approximately 20% faster than memcache-client (which itself was heavily optimized) in Ruby 1.9.2. - 2. contains explicit "chokepoint" methods which handle all requests; these can be hooked into by monitoring tools (NewRelic, Rack::Bug, etc) to track memcached usage. - 3. supports SASL for use in managed environments, e.g. Heroku. - 4. provides proper failover with recovery and adjustable timeouts - - Supported Ruby versions and implementations ------------------------------------------------ Dalli should work identically on: @@ -66,15 +46,12 @@ value = dc.get('abc') ``` The test suite requires memcached 1.4.3+ with SASL enabled (`brew install memcached --enable-sasl ; mv /usr/bin/memcached /usr/bin/memcached.old`). Currently only supports the PLAIN mechanism. -Dalli has no runtime dependencies and never will. If you are using Ruby <2.3, -you can optionally install the '[kgio](https://bogomips.org/kgio/)' gem to -give Dalli a 20-30% performance boost. +Dalli has no runtime dependencies. - Usage with Rails 3.x and 4.x --------------------------- In your Gemfile: @@ -158,11 +135,11 @@ **namespace**: If specified, prepends each key with this value to provide simple namespacing. Default is nil. **failover**: Boolean, if true Dalli will failover to another server if the main server for a key is down. Default is true. -**threadsafe**: Boolean. If true Dalli ensures that only one thread is using a socket at a given time. Default is true. Set to false at your own peril. +**threadsafe**: Boolean. If true Dalli ensures that only one thread is using a socket at a given time. Default is true. You can set to false if you are using the Client within a thread-safe connection pool. **serializer**: The serializer to use for objects being stored (ex. JSON). Default is Marshal. **compress**: Boolean, if true Dalli will gzip-compress values larger than 1K. Default is false. @@ -204,10 +181,10 @@ **instrument_errors**: Boolean. When true DalliStore will send notification of Dalli::DalliError via a 'cache_error.active_support' event. Default is false. Features and Changes ------------------------ -By default, Dalli is thread-safe. Disable thread-safety at your own peril. +By default, Dalli is thread-safe. Disable thread-safety at your own peril. Dalli does not need anything special in Unicorn/Passenger since 2.0.4. It will detect sockets shared with child processes and gracefully reopen the socket.