lib/suo/client/redis.rb in suo-0.3.4 vs lib/suo/client/redis.rb in suo-0.4.0

- old
+ new

@@ -7,36 +7,44 @@ options[:client] ||= ::Redis.new(options[:connection] || {}) super 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 ret && ret[0] == OK_STR 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) set(val, nil) nil