Class: ActiveSupport::Cache::MemCacheStore
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Store
|
|
Instance Chain:
self,
Strategy::LocalCache ,
Store
|
|
Inherits: |
ActiveSupport::Cache::Store
|
Defined in: | activesupport/lib/active_support/cache/mem_cache_store.rb |
Overview
A cache store implementation which stores data in Memcached: memcached.org
This is currently the most popular cache store for production websites.
Special features:
-
Clustering and load balancing. One can specify multiple memcached servers, and MemCacheStore will load balance between all available servers. If a server goes down, then MemCacheStore will ignore it until it comes back up.
MemCacheStore
implements the Strategy::LocalCache
strategy which implements an in-memory cache inside of a block.
Constant Summary
-
DEFAULT_CODER =
Dalli automatically Marshal values
NullCoder
-
ESCAPE_KEY_CHARS =
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 53/[\x00-\x20%\x7F-\xFF]/n
Store
- Inherited
Class Attribute Summary
-
.supports_cache_versioning? ⇒ Boolean
readonly
Advertise cache versioning support.
Store
- Inherited
Class Method Summary
-
.new(*addresses) ⇒ MemCacheStore
constructor
Creates a new
MemCacheStore
object, with the given memcached server addresses.
Store
- Inherited
.new | Creates a new cache. |
Instance Attribute Summary
Store
- Inherited
#logger, #options, | |
#silence? | Alias for Store#silence. |
Instance Method Summary
-
#clear(options = nil)
Clear the entire cache on all memcached servers.
-
#decrement(name, amount = 1, options = nil)
Decrement a cached value.
-
#increment(name, amount = 1, options = nil)
Increment a cached value.
-
#stats
Get the statistics from the memcached servers.
Strategy::LocalCache
- Included
#middleware | Middleware class can be inserted as a |
#with_local_cache | Use a local cache for the duration of block. |
Store
- Inherited
#cleanup | Cleanups the cache by removing expired entries. |
#clear | Clears the entire cache. |
#decrement | Decrements an integer value in the cache. |
#delete | Deletes an entry in the cache. |
#delete_matched | Deletes all entries with keys matching the pattern. |
#delete_multi | Deletes multiple entries in the cache. |
#exist? | Returns |
#fetch | Fetches data from the cache, using the given key. |
#fetch_multi | Fetches data from the cache, using the given keys. |
#increment | Increments an integer value in the cache. |
#mute | Silences the logger within a block. |
#read | Reads data from the cache, using the given key. |
#read_multi | Reads multiple values at once from the cache. |
#silence, | |
#silence! | Silences the logger. |
#write | Writes the value to the cache, with the key. |
#write_multi |
|
#key_matcher | Adds the namespace defined in the options to a pattern designed to match keys. |
Constructor Details
.new(*addresses) ⇒ MemCacheStore
Creates a new MemCacheStore
object, with the given memcached server addresses. Each address is either a host name, or a host-with-port string in the form of “host_name:port”. For example:
ActiveSupport::Cache::MemCacheStore.new("localhost", "server-downstairs.localnetwork:8229")
If no addresses are provided, but ENV is defined, it will be used instead. Otherwise, MemCacheStore
will connect to localhost:11211 (the default memcached port).
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 86
def initialize(*addresses) addresses = addresses.flatten = addresses. super( ) unless [String, Dalli::Client, NilClass].include?(addresses.first.class) raise ArgumentError, "First argument must be an empty array, an array of hosts or a Dalli::Client instance." end if addresses.first.is_a?(Dalli::Client) @data = addresses.first else = .dup UNIVERSAL_OPTIONS.each { |name| .delete(name) } @data = self.class.build_mem_cache(*(addresses + [ ])) end end
Class Attribute Details
.supports_cache_versioning? ⇒ Boolean
(readonly)
Advertise cache versioning support.
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 46
def self.supports_cache_versioning? true end
Instance Method Details
#clear(options = nil)
Clear the entire cache on all memcached servers. This method should be used with care when shared cache is being used.
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 131
def clear( = nil) rescue_error_with(nil) { @data.with { |c| c.flush_all } } end
#decrement(name, amount = 1, options = nil)
Decrement a cached value. This method uses the memcached decr atomic operator and can only be used on values written with the :raw
option. Calling it on a value not stored with :raw
will initialize that value to zero.
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 120
def decrement(name, amount = 1, = nil) = ( ) instrument(:decrement, name, amount: amount) do rescue_error_with nil do @data.with { |c| c.decr(normalize_key(name, ), amount, [:expires_in]) } end end end
#increment(name, amount = 1, options = nil)
Increment a cached value. This method uses the memcached incr atomic operator and can only be used on values written with the :raw
option. Calling it on a value not stored with :raw
will initialize that value to zero.
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 107
def increment(name, amount = 1, = nil) = ( ) instrument(:increment, name, amount: amount) do rescue_error_with nil do @data.with { |c| c.incr(normalize_key(name, ), amount, [:expires_in]) } end end end
#stats
Get the statistics from the memcached servers.
# File 'activesupport/lib/active_support/cache/mem_cache_store.rb', line 136
def stats @data.with { |c| c.stats } end