Class: SplitIoClient::Cache::Adapters::RedisAdapter
- Inherits:
-
Object
- Object
- SplitIoClient::Cache::Adapters::RedisAdapter
- Defined in:
- lib/splitclient-rb/cache/adapters/redis_adapter.rb
Overview
Redis adapter used to provide interface to Redis
Constant Summary collapse
- SCAN_SLICE =
5000
Instance Attribute Summary collapse
-
#redis ⇒ Object
readonly
Returns the value of attribute redis.
Instance Method Summary collapse
- #add_to_map(key, field, value) ⇒ Object
- #add_to_set(key, val) ⇒ Object
- #append_to_string(key, val) ⇒ Object
- #bool(key) ⇒ Object
- #clear(prefix) ⇒ Object
- #delete(key) ⇒ Object
- #delete_from_map(key, field) ⇒ Object
- #delete_from_set(key, val) ⇒ Object
-
#exists?(key) ⇒ Boolean
General.
- #find_in_map(key, field) ⇒ Object
- #find_strings_by_prefix(prefix) ⇒ Object (also: #find_sets_by_prefix)
- #get_all_from_set(key) ⇒ Object
- #get_map(key) ⇒ Object
- #get_set(key) ⇒ Object
- #in_map?(key, field) ⇒ Boolean
- #in_set?(key, val) ⇒ Boolean
- #inc(key, inc = 1) ⇒ Object
-
#initialize(redis_url) ⇒ RedisAdapter
constructor
A new instance of RedisAdapter.
-
#initialize_map(key) ⇒ Object
(also: #initialize_set)
Map.
- #map_keys(key) ⇒ Object
- #multiple_strings(keys) ⇒ Object
- #pipelined(&block) ⇒ Object
- #random_set_elements(key, count) ⇒ Object
-
#set_bool(key, val) ⇒ Object
Bool.
- #set_string(key, str) ⇒ Object
-
#string(key) ⇒ Object
String.
- #union_sets(set_keys) ⇒ Object
Constructor Details
#initialize(redis_url) ⇒ RedisAdapter
Returns a new instance of RedisAdapter.
12 13 14 15 16 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 12 def initialize(redis_url) connection = redis_url.is_a?(Hash) ? redis_url : { url: redis_url } @redis = Redis.new(connection) end |
Instance Attribute Details
#redis ⇒ Object (readonly)
Returns the value of attribute redis.
10 11 12 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 10 def redis @redis end |
Instance Method Details
#add_to_map(key, field, value) ⇒ Object
23 24 25 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 23 def add_to_map(key, field, value) @redis.hset(key, field, value) end |
#add_to_set(key, val) ⇒ Object
91 92 93 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 91 def add_to_set(key, val) @redis.sadd(key, val) end |
#append_to_string(key, val) ⇒ Object
74 75 76 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 74 def append_to_string(key, val) @redis.append(key, val) end |
#bool(key) ⇒ Object
83 84 85 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 83 def bool(key) @redis.get(key) == 'true' end |
#clear(prefix) ⇒ Object
142 143 144 145 146 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 142 def clear(prefix) keys = @redis.keys("#{prefix}*") keys.map { |key| @redis.del(key) } end |
#delete(key) ⇒ Object
126 127 128 129 130 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 126 def delete(key) return nil if key == [] @redis.del(key) end |
#delete_from_map(key, field) ⇒ Object
31 32 33 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 31 def delete_from_map(key, field) @redis.hdel(key, field) end |
#delete_from_set(key, val) ⇒ Object
95 96 97 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 95 def delete_from_set(key, val) @redis.srem(key, val) end |
#exists?(key) ⇒ Boolean
General
122 123 124 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 122 def exists?(key) @redis.exists(key) end |
#find_in_map(key, field) ⇒ Object
27 28 29 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 27 def find_in_map(key, field) @redis.hget(key, field) end |
#find_strings_by_prefix(prefix) ⇒ Object Also known as: find_sets_by_prefix
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 56 def find_strings_by_prefix(prefix) memo = { items: [], cursor: 0 } loop do memo[:cursor], items = @redis.scan(memo[:cursor], match: "#{prefix}*", count: SCAN_SLICE) memo[:items].push(*items) break if memo[:cursor] == '0' end memo[:items] end |
#get_all_from_set(key) ⇒ Object
107 108 109 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 107 def get_all_from_set(key) @redis.smembers(key) end |
#get_map(key) ⇒ Object
43 44 45 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 43 def get_map(key) @redis.hgetall(key) end |
#get_set(key) ⇒ Object
99 100 101 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 99 def get_set(key) @redis.smembers(key) end |
#in_map?(key, field) ⇒ Boolean
35 36 37 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 35 def in_map?(key, field) @redis.hexists(key, field) end |
#in_set?(key, val) ⇒ Boolean
103 104 105 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 103 def in_set?(key, val) @redis.sismember(key, val) end |
#inc(key, inc = 1) ⇒ Object
132 133 134 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 132 def inc(key, inc = 1) @redis.incrby(key, inc) end |
#initialize_map(key) ⇒ Object Also known as: initialize_set
Map
19 20 21 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 19 def initialize_map(key) # No need to initialize hash/map in Redis end |
#map_keys(key) ⇒ Object
39 40 41 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 39 def map_keys(key) @redis.hkeys(key) end |
#multiple_strings(keys) ⇒ Object
70 71 72 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 70 def multiple_strings(keys) Hash[keys.zip(@redis.mget(keys))] end |
#pipelined(&block) ⇒ Object
136 137 138 139 140 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 136 def pipelined(&block) @redis.pipelined do block.call end end |
#random_set_elements(key, count) ⇒ Object
117 118 119 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 117 def random_set_elements(key, count) @redis.srandmember(key, count) end |
#set_bool(key, val) ⇒ Object
Bool
79 80 81 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 79 def set_bool(key, val) @redis.set(key, val.to_s) end |
#set_string(key, str) ⇒ Object
52 53 54 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 52 def set_string(key, str) @redis.set(key, str) end |
#string(key) ⇒ Object
String
48 49 50 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 48 def string(key) @redis.get(key) end |
#union_sets(set_keys) ⇒ Object
111 112 113 114 115 |
# File 'lib/splitclient-rb/cache/adapters/redis_adapter.rb', line 111 def union_sets(set_keys) return [] if set_keys == [] @redis.sunion(set_keys) end |