Class: Xunch::ShardRedis
- Defined in:
- lib/xunch/shard/shard_redis.rb
Instance Method Summary collapse
- #batch_del(keys) ⇒ Object
- #del(key) ⇒ Object
- #exists(key) ⇒ Object
- #expire(key, ttl) ⇒ Object
- #get(key) ⇒ Object
- #hgetall(key) ⇒ Object
- #hmgetall(keys) ⇒ Object
- #hmsetall(key_value_pairs, ttl) ⇒ Object
- #hsetall(key, hash, ttl) ⇒ Object
-
#initialize(regex, shard_infos) ⇒ ShardRedis
constructor
A new instance of ShardRedis.
- #llen(key) ⇒ Object
- #lrange(key, start, stop) ⇒ Object
- #lremove(key, value) ⇒ Object
- #lset(temp_key, new_key, sub_keys, ttl) ⇒ Object
- #mapped_hget(key, fields) ⇒ Object
- #mapped_hmget(keys, fields) ⇒ Object
- #mget(keys) ⇒ Object
- #mset(key_value_pairs, ttl) ⇒ Object
- #rename(old_key, new_key) ⇒ Object
- #set(key, value, ttl) ⇒ Object
- #ttl(key) ⇒ Object
- #type(key) ⇒ Object
Methods inherited from Sharded
Constructor Details
#initialize(regex, shard_infos) ⇒ ShardRedis
Returns a new instance of ShardRedis.
4 5 6 |
# File 'lib/xunch/shard/shard_redis.rb', line 4 def initialize(regex,shard_infos) super end |
Instance Method Details
#batch_del(keys) ⇒ Object
18 19 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 45 |
# File 'lib/xunch/shard/shard_redis.rb', line 18 def batch_del(keys) shard_key_map = Hash.new shard_index_map = Hash.new for i in 0 .. keys.length - 1 do redis = get_shard(keys[i]) if shard_key_map[redis] == nil shard_key = Array.new shard_key.push(keys[i]) shard_index = Array.new shard_index.push(i) shard_key_map[redis] = shard_key shard_index_map[redis] = shard_index else shard_key_map[redis].push(keys[i]) shard_index_map[redis].push(i) end end results = Array.new(keys.length) shard_key_map.each { | redis, keys | values = redis.del(keys) shard_index = shard_index_map[redis] for i in 0 .. shard_index.length - 1 do results[shard_index[i]] = values[i] end } results end |
#del(key) ⇒ Object
13 14 15 16 |
# File 'lib/xunch/shard/shard_redis.rb', line 13 def del(key) redis = get_shard(key) redis.del(key) end |
#exists(key) ⇒ Object
8 9 10 11 |
# File 'lib/xunch/shard/shard_redis.rb', line 8 def exists(key) redis = get_shard(key) redis.exists(key) end |
#expire(key, ttl) ⇒ Object
47 48 49 50 |
# File 'lib/xunch/shard/shard_redis.rb', line 47 def expire(key, ttl) redis = get_shard(key) redis.expire(key, ttl) end |
#get(key) ⇒ Object
57 58 59 60 |
# File 'lib/xunch/shard/shard_redis.rb', line 57 def get(key) redis = get_shard(key) redis.get(key) end |
#hgetall(key) ⇒ Object
149 150 151 152 |
# File 'lib/xunch/shard/shard_redis.rb', line 149 def hgetall(key) redis = get_shard(key) redis.hgetall(key) end |
#hmgetall(keys) ⇒ Object
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/xunch/shard/shard_redis.rb', line 159 def hmgetall(keys) shard_key_map = Hash.new shard_index_map = Hash.new for i in 0 .. keys.length - 1 do redis = get_shard(keys[i]) if shard_key_map[redis] == nil shard_key = Array.new shard_key.push(keys[i]) shard_index = Array.new shard_index.push(i) shard_key_map[redis] = shard_key shard_index_map[redis] = shard_index else shard_key_map[redis].push(keys[i]) shard_index_map[redis].push(i) end end results = Array.new(keys.length) shard_key_map.each { | redis, keys | values = redis.hmgetall(keys) shard_index = shard_index_map[redis] for i in 0 .. shard_index.length - 1 do results[shard_index[i]] = values[i] end } results end |
#hmsetall(key_value_pairs, ttl) ⇒ Object
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/xunch/shard/shard_redis.rb', line 188 def hmsetall(key_value_pairs, ttl) shard_map = Hash.new key_value_pairs.each { | key, value | redis = get_shard(key) if shard_map[redis] == nil shard = Hash.new shard[key] = value shard_map[redis] = shard else shard_map[redis][key] = value end } result = [] shard_map.each { | redis, kvs | result.push redis.hmset(kvs, ttl) } result.flatten! end |
#hsetall(key, hash, ttl) ⇒ Object
154 155 156 157 |
# File 'lib/xunch/shard/shard_redis.rb', line 154 def hsetall(key, hash, ttl) redis = get_shard(key) redis.hsetall(key,hash,ttl) end |
#llen(key) ⇒ Object
236 237 238 239 |
# File 'lib/xunch/shard/shard_redis.rb', line 236 def llen(key) redis = get_shard(key) redis.llen(key) end |
#lrange(key, start, stop) ⇒ Object
252 253 254 255 |
# File 'lib/xunch/shard/shard_redis.rb', line 252 def lrange(key, start, stop) redis = get_shard(key) redis.lrange(key,start,stop) end |
#lremove(key, value) ⇒ Object
241 242 243 244 |
# File 'lib/xunch/shard/shard_redis.rb', line 241 def lremove(key,value) redis = get_shard(key) redis.lrem(key,*value) end |
#lset(temp_key, new_key, sub_keys, ttl) ⇒ Object
246 247 248 249 250 |
# File 'lib/xunch/shard/shard_redis.rb', line 246 def lset(temp_key, new_key, sub_keys, ttl) redis = get_shard(new_key) result = redis.lset(temp_key,new_key,sub_keys,ttl) result[result.length - 2] end |
#mapped_hget(key, fields) ⇒ Object
115 116 117 118 |
# File 'lib/xunch/shard/shard_redis.rb', line 115 def mapped_hget(key,fields) redis = get_shard(key) redis.hget(key,*fields) end |
#mapped_hmget(keys, fields) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/xunch/shard/shard_redis.rb', line 120 def mapped_hmget(keys,fields) shard_key_map = Hash.new shard_index_map = Hash.new for i in 0 .. keys.length - 1 do redis = get_shard(keys[i]) if shard_key_map[redis] == nil shard_key = Array.new shard_key.push(keys[i]) shard_index = Array.new shard_index.push(i) shard_key_map[redis] = shard_key shard_index_map[redis] = shard_index else shard_key_map[redis].push(keys[i]) shard_index_map[redis].push(i) end end results = Array.new(keys.length) shard_key_map.each { | redis, keys | values = redis.hmget(keys,*fields) shard_index = shard_index_map[redis] for i in 0 .. shard_index.length - 1 do results[shard_index[i]] = values[i] end } results end |
#mget(keys) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/xunch/shard/shard_redis.rb', line 62 def mget(keys) shard_key_map = Hash.new shard_index_map = Hash.new for i in 0 .. keys.length - 1 do redis = get_shard(keys[i]) if shard_key_map[redis] == nil shard_key = Array.new shard_key.push(keys[i]) shard_index = Array.new shard_index.push(i) shard_key_map[redis] = shard_key shard_index_map[redis] = shard_index else shard_key_map[redis].push(keys[i]) shard_index_map[redis].push(i) end end results = Array.new(keys.length) shard_key_map.each { | redis, keys | values = redis.mget(keys) shard_index = shard_index_map[redis] for i in 0 .. shard_index.length - 1 do results[shard_index[i]] = values[i] end } results end |
#mset(key_value_pairs, ttl) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/xunch/shard/shard_redis.rb', line 96 def mset(key_value_pairs, ttl) shard_map = Hash.new key_value_pairs.each { | key, value | redis = get_shard(key) if shard_map[redis] == nil shard = Hash.new shard[key] = value shard_map[redis] = shard else shard_map[redis][key] = value end } result = [] shard_map.each { | redis, kvs | result.push redis.mset(kvs, ttl) } return result.flatten! end |
#rename(old_key, new_key) ⇒ Object
257 258 259 260 |
# File 'lib/xunch/shard/shard_redis.rb', line 257 def rename(old_key, new_key) redis = get_shard(key) redis.rename(old_key,new_key) end |
#set(key, value, ttl) ⇒ Object
91 92 93 94 |
# File 'lib/xunch/shard/shard_redis.rb', line 91 def set(key, value, ttl) redis = get_shard(key) redis.set(key,value,ttl) end |
#ttl(key) ⇒ Object
52 53 54 55 |
# File 'lib/xunch/shard/shard_redis.rb', line 52 def ttl(key) redis = get_shard(key) redis.ttl(key) end |
#type(key) ⇒ Object
262 263 264 265 |
# File 'lib/xunch/shard/shard_redis.rb', line 262 def type(key) redis = get_shard(key) redis.type(key) end |