class Hoodoo::TransientStore::Redis
Hoodoo::TransientStore
plugin supporting Redis. The redis-rb gem is used for server communication.
Public Class Methods
new( storage_host_uri:, namespace: )
click to toggle source
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.
Calls superclass method
Hoodoo::TransientStore::Base::new
# 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
Public Instance Methods
close()
click to toggle source
See Hoodoo::TransientStore::Base#close
for details.
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 71 def close @client.quit() end
delete( key: )
click to toggle source
See Hoodoo::TransientStore::Base#delete
for details.
# File lib/hoodoo/transient_store/transient_store/redis.rb, line 64 def delete( key: ) @client.del( namespaced_key( key ) ) true end
get( key: )
click to toggle source
See Hoodoo::TransientStore::Base#get
for details.
# 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
set( key:, payload:, maximum_lifespan: )
click to toggle source
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.
# 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