Class: RedisCacheStore
- Inherits:
-
Object
- Object
- RedisCacheStore
- Defined in:
- lib/cache_store_redis/redis_cache_store.rb
Overview
This class is used to implement a redis cache store.
Instance Method Summary collapse
- #clean ⇒ Object (also: #shutdown)
-
#configure(host = 'localhost', port = 6379, db = 'default', password = nil, driver: nil, url: nil, connect_timeout: 0.5, read_timeout: 1, write_timeout: 0.5) ⇒ Object
This method is called to configure the connection to the cache store.
- #connection_pool ⇒ Object
-
#exist?(key) ⇒ Boolean
This method is called to check if a value exists within this cache store for a specific key.
-
#get(key, expires_in = 0, &block) ⇒ Object
This method is called to get a value from this cache store by it’s unique key.
-
#initialize(namespace = nil, config = nil) ⇒ RedisCacheStore
constructor
A new instance of RedisCacheStore.
-
#ping ⇒ String
Ping the cache store.
-
#remove(key) ⇒ Object
This method is called to remove a value from this cache store by it’s unique key.
-
#set(key, value, expires_in = 3_600) ⇒ Object
This method is called to set a value within this cache store by it’s key.
- #with_client ⇒ Object
Constructor Details
#initialize(namespace = nil, config = nil) ⇒ RedisCacheStore
Returns a new instance of RedisCacheStore.
3 4 5 6 7 8 9 10 11 12 13 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 3 def initialize(namespace = nil, config = nil) @connection_pool = RedisConnectionPool.new(config) @namespace = namespace @config = config @connections_created = 0 @connections_in_use = 0 @mutex = Mutex.new @enable_stats = false end |
Instance Method Details
#clean ⇒ Object Also known as: shutdown
46 47 48 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 46 def clean connection_pool.shutdown end |
#configure(host = 'localhost', port = 6379, db = 'default', password = nil, driver: nil, url: nil, connect_timeout: 0.5, read_timeout: 1, write_timeout: 0.5) ⇒ Object
This method is called to configure the connection to the cache store.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 20 def configure(host = 'localhost', port = 6379, db = 'default', password = nil, driver: nil, url: nil, connect_timeout: 0.5, read_timeout: 1, write_timeout: 0.5) if !url.nil? @config = {} @config[:url] = url @config[:db] = db else @config = { host: host, port: port, db: db } end @config[:password] = password unless password.nil? @config[:driver] = driver unless driver.nil? @config[:connect_timeout] = connect_timeout @config[:read_timeout] = read_timeout @config[:write_timeout] = write_timeout connection_pool.config = @config end |
#connection_pool ⇒ Object
15 16 17 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 15 def connection_pool @connection_pool end |
#exist?(key) ⇒ Boolean
This method is called to check if a value exists within this cache store for a specific key.
122 123 124 125 126 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 122 def exist?(key) with_client do |client| client.exists(build_key(key)) end end |
#get(key, expires_in = 0, &block) ⇒ Object
This method is called to get a value from this cache store by it’s unique key.
(This is used in conjunction with the block to hydrate the cache key if it is empty.) when it is not found.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 88 def get(key, expires_in = 0, &block) k = build_key(key) value = with_client do |client| client.get(k) end if !value.nil? && value.strip.empty? value = nil else value = deserialize(value) unless value.nil? end if value.nil? && block_given? value = yield set(key, value, expires_in) end value end |
#ping ⇒ String
Ping the cache store.
131 132 133 134 135 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 131 def ping with_client do |client| client.ping end end |
#remove(key) ⇒ Object
This method is called to remove a value from this cache store by it’s unique key.
112 113 114 115 116 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 112 def remove(key) with_client do |client| client.del(build_key(key)) end end |
#set(key, value, expires_in = 3_600) ⇒ Object
This method is called to set a value within this cache store by it’s key.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 62 def set(key, value, expires_in = 3_600) k = build_key(key) v = if value.nil? || (value.is_a?(String) && value.strip.empty?) nil else serialize(value) end with_client do |client| client.multi do client.set(k, v) client.expire(k, expires_in) if expires_in.positive? end end end |
#with_client ⇒ Object
51 52 53 54 55 |
# File 'lib/cache_store_redis/redis_cache_store.rb', line 51 def with_client connection_pool.with_connection do |connection| yield connection end end |