module Redlics
Redlics
namespace
Redlics
version.
Constants
- CONTEXTS
- LUA_CACHE
Redlics
constants.- LUA_SCRIPT
- VERSION
Public Instance Methods
config()
click to toggle source
configure() { |config| ... }
click to toggle source
redis() { |conn| ... }
click to toggle source
Get or initialize the Redis connection. @return [Object] redis connection
# File lib/redlics.rb, line 31 def redis raise ArgumentError, 'requires a block' unless block_given? redis_pool.with do |conn| retryable = true begin yield conn rescue Redis::BaseError => e raise e unless config.silent rescue Redis::CommandError => ex (conn.disconnect!; retryable = false; retry) if retryable && ex.message =~ /READONLY/ raise unless config.silent end end end
script(file, *args)
click to toggle source
Load Lua script file and arguments in Redis.
@param file [String] absolute path to the Lua script file @param *args [Array] list of arguments for Redis evalsha @return [String] Lua script result
# File lib/redlics.rb, line 51 def script(file, *args) begin cache = LUA_CACHE[redis { |r| r.client.options[:url] }] if cache.key?(file) sha = cache[file] else src = File.read(file) sha = redis { |r| r.redis.script(:load, src) } cache[file] = sha end redis { |r| r.evalsha(sha, *args) } rescue RuntimeError case $!.message when Exception::ErrorPatterns::NOSCRIPT LUA_CACHE[redis { |r| r.client.options[:url] }].clear retry else raise $! unless config.silent end end end
Private Instance Methods
redis_pool()
click to toggle source
Get or initialize the Redis connection pool. @return [ConnectionPool] redis connection pool
# File lib/redlics.rb, line 89 def redis_pool @redis ||= Redlics::Connection.create(config.to_h) end