class Workerholic::Storage::RedisWrapper
Attributes
redis[R]
retries[R]
Public Class Methods
new()
click to toggle source
# File lib/workerholic/storage.rb, line 6 def initialize @retries = 0 @redis = Workerholic.redis_pool redis.with do |conn| conn.ping end end
Public Instance Methods
add_to_set(key, score, value, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 56 def add_to_set(key, score, value, retry_delay = 5) execute(retry_delay) { |conn| conn.zadd(key, score, value) } end
delete(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 39 def delete(key, retry_delay = 5) execute(retry_delay) { |conn| conn.del(key) } end
fetch_queue_names(retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 88 def fetch_queue_names(retry_delay = 5) queue_name_pattern = 'workerholic:queue:*' execute(retry_delay) { |conn| conn.keys(queue_name_pattern) } end
get_all_elements_from_list(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 98 def get_all_elements_from_list(key, retry_delay = 5) execute(retry_delay) { |conn| conn.lrange(key, 0, -1) } end
get_keys_for_namespace(namespace, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 94 def get_keys_for_namespace(namespace, retry_delay = 5) execute(retry_delay) { |conn| conn.keys(namespace) } end
hash_get(key, field, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 19 def hash_get(key, field, retry_delay = 5) execute(retry_delay) { |conn| conn.hget(key, field) } end
hash_get_all(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 23 def hash_get_all(key, retry_delay = 5) execute(retry_delay) { |conn| conn.hgetall(key) } end
hash_get_multiple_elements(key, fields, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 31 def hash_get_multiple_elements(key, fields, retry_delay = 5) execute(retry_delay) { |conn| conn.hmget(key, *fields) } end
hash_increment_field(key, field, increment, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 35 def hash_increment_field(key, field, increment, retry_delay = 5) execute(retry_delay) { |conn| conn.hincrby(key, field, increment) } end
hash_keys(namespace, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 27 def hash_keys(namespace, retry_delay = 5) execute(retry_delay) { |conn| conn.hkeys(namespace) } end
hash_set(key, field, value, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 15 def hash_set(key, field, value, retry_delay = 5) execute(retry_delay) { |conn| conn.hset(key, field, value) } end
keys_count(namespace, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 84 def keys_count(namespace, retry_delay = 5) execute(retry_delay) { |conn| conn.keys(namespace + ':*').size } end
list_length(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 43 def list_length(key, retry_delay = 5) execute(retry_delay) { |conn| conn.llen(key) } end
peek(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 60 def peek(key, retry_delay = 5) execute(retry_delay) { |conn| conn.zrange(key, 0, 0, with_scores: true).first } end
pop(key, timeout = 1, retry_delay = 5)
click to toggle source
blocking pop from Redis queue
# File lib/workerholic/storage.rb, line 52 def pop(key, timeout = 1, retry_delay = 5) execute(retry_delay) { |conn| conn.blpop(key, timeout) } end
push(key, value, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 47 def push(key, value, retry_delay = 5) execute(retry_delay) { |conn| conn.rpush(key, value) } end
remove_from_set(key, score, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 64 def remove_from_set(key, score, retry_delay = 5) execute(retry_delay) { |conn| conn.zremrangebyscore(key, score, score) } end
remove_range_from_set(key, minscore, maxscore, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 80 def remove_range_from_set(key, minscore, maxscore, retry_delay = 5) execute(retry_delay) { |conn| conn.zremrangebyscore(key, minscore, maxscore) } end
sorted_set_all_members(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 72 def sorted_set_all_members(key, retry_delay = 5) execute(retry_delay) { |conn| conn.zrange(key, 0, -1) } end
sorted_set_range_members(key, minscore, maxscore, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 76 def sorted_set_range_members(key, minscore, maxscore, retry_delay = 5) execute(retry_delay) { |conn| conn.zrangebyscore(key, minscore, maxscore, with_scores: true) } end
sorted_set_size(key, retry_delay = 5)
click to toggle source
# File lib/workerholic/storage.rb, line 68 def sorted_set_size(key, retry_delay = 5) execute(retry_delay) { |conn| conn.zcard(key) } end
Private Instance Methods
execute(retry_delay = 5) { |conn| ... }
click to toggle source
# File lib/workerholic/storage.rb, line 106 def execute(retry_delay = 5) begin result = redis.with { |conn| yield conn } reset_retries rescue Redis::CannotConnectError @retries += 1 if retries_exhausted? raise RedisCannotRecover, 'Redis reconnect retries exhausted. Main Workerholic thread will be terminated now.' end sleep retry_delay retry end result end
reset_retries()
click to toggle source
# File lib/workerholic/storage.rb, line 127 def reset_retries @retries = 0 end
retries_exhausted?()
click to toggle source
# File lib/workerholic/storage.rb, line 123 def retries_exhausted? retries == 5 end