Class: ActiveSupport::Cache::MemoryStore

Inherits:
Store show all
Defined in:
lib/active_support/cache/memory_store.rb

Overview

A cache store implementation which stores everything into memory in the same process. If you’re running multiple Ruby on Rails server processes (which is the case if you’re using mongrel_cluster or Phusion Passenger), then this means that your Rails server process instances won’t be able to share cache data with each other. If your application never performs manual cache item expiry (e.g. when you’re using generational cache keys), then using MemoryStore is ok. Otherwise, consider carefully whether you should be using this cache store.

MemoryStore is not only able to store strings, but also arbitrary Ruby objects.

MemoryStore is not thread-safe. Use SynchronizedMemoryStore instead if you need thread-safety.

Direct Known Subclasses

DRbStore, SynchronizedMemoryStore

Instance Attribute Summary

Attributes inherited from Store

#logger_off, #silence

Instance Method Summary collapse

Methods inherited from Store

#decrement, #fetch, #increment, #mute, #silence!

Constructor Details

#initializeMemoryStore

Returns a new instance of MemoryStore.



18
19
20
# File 'lib/active_support/cache/memory_store.rb', line 18

def initialize
  @data = {}
end

Instance Method Details

#clearObject



53
54
55
# File 'lib/active_support/cache/memory_store.rb', line 53

def clear
  @data.clear
end

#delete(name, options = nil) ⇒ Object



38
39
40
41
# File 'lib/active_support/cache/memory_store.rb', line 38

def delete(name, options = nil)
  super
  @data.delete(name)
end

#delete_matched(matcher, options = nil) ⇒ Object



43
44
45
46
# File 'lib/active_support/cache/memory_store.rb', line 43

def delete_matched(matcher, options = nil)
  super
  @data.delete_if { |k,v| k =~ matcher }
end

#exist?(name, options = nil) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
# File 'lib/active_support/cache/memory_store.rb', line 48

def exist?(name, options = nil)
  super
  @data.has_key?(name)
end

#read(name, options = nil) ⇒ Object



28
29
30
31
# File 'lib/active_support/cache/memory_store.rb', line 28

def read(name, options = nil)
  super
  @data[name]
end

#read_multi(*names) ⇒ Object



22
23
24
25
26
# File 'lib/active_support/cache/memory_store.rb', line 22

def read_multi(*names)
  results = {}
  names.each { |n| results[n] = read(n) }
  results
end

#write(name, value, options = nil) ⇒ Object



33
34
35
36
# File 'lib/active_support/cache/memory_store.rb', line 33

def write(name, value, options = nil)
  super
  @data[name] = value.freeze
end