module RedisLocks

Constants

VERSION

Public Class Methods

evalsha_or_eval(conn:, script:, digest:, keys: [], args: []) click to toggle source

This ensures that each Lua script is evaluated at most once; after it has been evaluated, we will be able to call it just by passing its digest.

# File lib/redis_locks/evalsha_or_eval.rb, line 5
def self.evalsha_or_eval(conn:, script:, digest:, keys: [], args: [])
  conn.evalsha digest, keys, args
rescue Redis::CommandError => e
  if e.message.start_with?('NOSCRIPT')
    conn.eval script, keys, args
  else
    raise
  end
end
redis() click to toggle source
# File lib/redis_locks.rb, line 16
def self.redis
  raise "RedisLocks.redis is not set!" unless @redis
  @redis
end
redis=(redis) click to toggle source
# File lib/redis_locks.rb, line 12
def self.redis=(redis)
  @redis = Connections.ensure_pool(redis)
end