class Shrine::Storage::Redis
Attributes
expire[R]
prefix[R]
redis[R]
Public Class Methods
new(client: nil, prefix: nil, expire: nil, **options)
click to toggle source
# File lib/shrine/storage/redis.rb, line 11 def initialize(client: nil, prefix: nil, expire: nil, **options) @redis = client || ::Redis.new(options) @prefix = prefix @expire = expire raise ArgumentError, 'Missing redis client' unless @redis.is_a?(::Redis) end
Public Instance Methods
delete(id)
click to toggle source
# File lib/shrine/storage/redis.rb, line 38 def delete(id) redis.del(key(id)) end
exists?(id)
click to toggle source
# File lib/shrine/storage/redis.rb, line 34 def exists?(id) redis.exists(key(id)) end
multi_delete(ids)
click to toggle source
# File lib/shrine/storage/redis.rb, line 42 def multi_delete(ids) if ids.is_a?(Array) ids.each { |id| delete(id) } elsif ids.is_a?(String) redis.del(keys(ids)) unless keys(ids).empty? end end
open(id)
click to toggle source
# File lib/shrine/storage/redis.rb, line 29 def open(id) redis.expire(key(id), expire) if expire StringIO.new(content(id)) end
upload(io, id, shrine_metadata: {}, **upload_options)
click to toggle source
# File lib/shrine/storage/redis.rb, line 18 def upload(io, id, shrine_metadata: {}, **upload_options) if expire redis.setex(key(id), expire, io.read) else redis.set(key(id), io.read) end end
url(id, **options)
click to toggle source
# File lib/shrine/storage/redis.rb, line 26 def url(id, **options) end
Private Instance Methods
content(id)
click to toggle source
# File lib/shrine/storage/redis.rb, line 52 def content(id) redis.get(key(id)).to_s end
key(id)
click to toggle source
# File lib/shrine/storage/redis.rb, line 60 def key(id) [*prefix, id].join(":") end
keys(id)
click to toggle source
# File lib/shrine/storage/redis.rb, line 56 def keys(id) redis.keys(key(id)) end