From 3a37a7498280e7ac25ff55a67a4bdd148cb3bbf9 Mon Sep 17 00:00:00 2001 From: Matt Larraz Date: Thu, 19 Mar 2020 17:21:15 -0700 Subject: [PATCH] Support connection pooled Redis --- lib/suo/client/redis.rb | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/suo/client/redis.rb b/lib/suo/client/redis.rb index ee62e76..2a106c7 100644 --- a/lib/suo/client/redis.rb +++ b/lib/suo/client/redis.rb @@ -9,21 +9,31 @@ module Suo end def clear - @client.del(@key) + with { |r| r.del(@key) } end private + def with(&block) + if @client.respond_to?(:with) + @client.with(&block) + else + yield @client + end + end + def get - [@client.get(@key), nil] + [with { |r| r.get(@key) }, nil] end def set(newval, _, expire: false) - ret = @client.multi do |multi| - if expire - multi.setex(@key, @options[:ttl], newval) - else - multi.set(@key, newval) + ret = with do |r| + r.multi do |rr| + if expire + rr.setex(@key, @options[:ttl], newval) + else + rr.set(@key, newval) + end end end @@ -31,11 +41,9 @@ module Suo end def synchronize - @client.watch(@key) do - yield - end + with { |r| r.watch(@key) { yield } } ensure - @client.unwatch + with { |r| r.unwatch } end def initial_set(val = BLANK_STR)