class Avocado::Redis::Strategy

Attributes

redis[R]

Public Class Methods

new(url = ENV['REDIS_URL']) click to toggle source
# File lib/avocado/redis/strategy.rb, line 6
def initialize(url = ENV['REDIS_URL'])
  @redis = ::Redis.new url: url
end

Public Instance Methods

purge_old(upload_id) click to toggle source
# File lib/avocado/redis/strategy.rb, line 22
def purge_old(upload_id)
  old_keys = keys.reject { |key| key.end_with? upload_id }
  redis.del(*old_keys) if old_keys.any?
end
read() click to toggle source
# File lib/avocado/redis/strategy.rb, line 10
def read
  return [] if keys.empty?
  redis.mget(*keys).map do |value|
    JSON.parse value
  end
end
write(data, upload_id) click to toggle source
# File lib/avocado/redis/strategy.rb, line 17
def write(data, upload_id)
  key = "avocado-#{Time.current.to_s(:nsec)}-#{upload_id}"
  redis.set key, data.to_json
end

Private Instance Methods

keys() click to toggle source
# File lib/avocado/redis/strategy.rb, line 28
def keys
  redis.scan_each(match: 'avocado-*').to_a.uniq
end