Class: CacheMachine::Adapters::Redis

Inherits:
CacheMachine::Adapter
  • Object
show all
Defined in:
lib/cache_machine/adapters/redis.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*options) ⇒ Redis

Returns a new instance of Redis.



8
9
10
11
# File 'lib/cache_machine/adapters/redis.rb', line 8

def initialize(*options)
  @redis = ::Redis.new(*options)
  CacheMachine::Logger.info "CACHE_MACHINE: initialized Redis adapter"
end

Instance Attribute Details

#redisObject

Returns the value of attribute redis.



6
7
8
# File 'lib/cache_machine/adapters/redis.rb', line 6

def redis
  @redis
end

Instance Method Details

#append_id_to_map(target, association, id) ⇒ Object



13
14
15
# File 'lib/cache_machine/adapters/redis.rb', line 13

def append_id_to_map(target, association, id)
  @redis.sadd(get_map_key(target, association), id)
end

#append_id_to_reverse_map(resource, association, target, id) ⇒ Object



17
18
19
# File 'lib/cache_machine/adapters/redis.rb', line 17

def append_id_to_reverse_map(resource, association, target, id)
  @redis.sadd(get_reverse_map_key(resource, association, target), id)
end

#association_ids(target, association) ⇒ Object



21
22
23
# File 'lib/cache_machine/adapters/redis.rb', line 21

def association_ids(target, association)
  get_ids(get_map_key(target, association)) { target.association_ids(association) }
end

#delete(key) ⇒ Object



25
26
27
# File 'lib/cache_machine/adapters/redis.rb', line 25

def delete(key)
  @redis.del(key).to_i > 0
end

#delete_content(key) ⇒ Object



29
30
31
# File 'lib/cache_machine/adapters/redis.rb', line 29

def delete_content(key)
  delete(get_content_key(key))
end

#fetch(key, options = {}, &block) ⇒ Object



33
34
35
36
# File 'lib/cache_machine/adapters/redis.rb', line 33

def fetch(key, options = {}, &block)
  key = get_content_key(key)
  block_given? ? exec_multi_command(:setnx, key, options, &block) : @redis.get(key)
end

#fetch_timestamp(name, options = {}, &block) ⇒ Object



38
39
40
# File 'lib/cache_machine/adapters/redis.rb', line 38

def fetch_timestamp(name, options = {}, &block)
  exec_multi_command(:setnx, get_timestamp_key(name), options, &block)
end

#reset_timestamp(name) ⇒ Object



42
43
44
# File 'lib/cache_machine/adapters/redis.rb', line 42

def reset_timestamp(name)
  @redis.del(get_timestamp_key(name))
end

#reverse_association_ids(resource, association, target) ⇒ Object



46
47
48
# File 'lib/cache_machine/adapters/redis.rb', line 46

def reverse_association_ids(resource, association, target)
  get_ids(get_reverse_map_key(resource, association, target)) { target.cache_map_ids(resource, association) }
end

#write_timestamp(name, options = {}, &block) ⇒ Object



50
51
52
# File 'lib/cache_machine/adapters/redis.rb', line 50

def write_timestamp(name, options = {}, &block)
  exec_multi_command(:set, get_timestamp_key(name), options, &block)
end