Class: RemoteResource::Storage::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/remote_resource/storage/redis.rb

Instance Method Summary collapse

Constructor Details

#initialize(redis, options = {}) ⇒ Redis

Returns a new instance of Redis.



9
10
11
12
13
14
15
16
# File 'lib/remote_resource/storage/redis.rb', line 9

def initialize(redis, options = {})
  @redis = redis
  @options = options.reverse_merge(
    serializer: Serializers::MarshalSerializer.new,
    expires_in: 1 * (60 * 60 * 24)
  )
  @serializer = @options[:serializer]
end

Instance Method Details

#read_key(key) ⇒ Object



18
19
20
21
22
# File 'lib/remote_resource/storage/redis.rb', line 18

def read_key(key)
  redis_value = @redis.hgetall key
  StorageEntry.new @serializer.load(redis_value['headers']),
                   @serializer.load(redis_value['data'])
end

#write_key(storage_key, storage_entry) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/remote_resource/storage/redis.rb', line 24

def write_key(storage_key, storage_entry)
  write_args = []
  storage_entry.to_hash.each_pair do |key, value|
    write_args.concat([key, @serializer.dump(value)]) unless value.empty?
  end
  @redis.multi do |multi|
    multi.hmset storage_key, *write_args
    multi.expire storage_key, @options[:expires_in]
  end
end