Hoodoo::TransientStore plugin supporting Redis. The redis-rb gem is used for server communication.
See Hoodoo::TransientStore::Base.new for details.
Do not instantiate this class directly. Use Hoodoo::TransientStore.new.
The redis-rb gem is used to
talk to Redis and requires connection UIRs
with a redis
protocol, such as
redis://localhost:6379
.
TCP keep-alive is enabled for the server connection.
Source: show
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 36 def initialize( storage_host_uri:, namespace: ) super # Pass all arguments through -> *not* 'super()' @client = connect_to_redis( storage_host_uri ) end
See Hoodoo::TransientStore::Base#close for details.
Source: show
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 71 def close @client.quit() end
See Hoodoo::TransientStore::Base#delete for details.
Source: show
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 64 def delete( key: ) @client.del( namespaced_key( key ) ) true end
See Hoodoo::TransientStore::Base#get for details.
Source: show
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 57 def get( key: ) result = @client.get( namespaced_key( key ) ) return result.nil? ? nil : ( JSON.parse( result ) rescue nil ) end
See Hoodoo::TransientStore::Base#set for details.
The payload is encoded into JSON for storage and automatically decoded by get; so callers don't need to do marshalling to Strings themselves.
Source: show
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 46 def set( key:, payload:, maximum_lifespan: ) nk = namespaced_key( key ) @client.set( nk, JSON.fast_generate( payload ) ) @client.expire( nk, maximum_lifespan ) true end