Class: Magick::Adapters::Redis

Inherits:
Base
  • Object
show all
Defined in:
lib/magick/adapters/redis.rb

Instance Method Summary collapse

Constructor Details

#initialize(redis_client = nil) ⇒ Redis

Returns a new instance of Redis.



6
7
8
9
10
11
12
# File 'lib/magick/adapters/redis.rb', line 6

def initialize(redis_client = nil)
  @redis = redis_client || default_redis_client
  @namespace = 'magick:features'
  raise AdapterError, 'Redis client is required' unless @redis
rescue StandardError => e
  raise AdapterError, "Failed to initialize Redis adapter: #{e.message}"
end

Instance Method Details

#all_featuresObject



39
40
41
42
43
44
45
# File 'lib/magick/adapters/redis.rb', line 39

def all_features
  pattern = "#{namespace}:*"
  keys = redis.keys(pattern)
  keys.map { |key| key.sub("#{namespace}:", '') }
rescue StandardError => e
  raise AdapterError, "Failed to get all features from Redis: #{e.message}"
end

#delete(feature_name) ⇒ Object



27
28
29
30
31
# File 'lib/magick/adapters/redis.rb', line 27

def delete(feature_name)
  redis.del(key_for(feature_name))
rescue StandardError => e
  raise AdapterError, "Failed to delete from Redis: #{e.message}"
end

#exists?(feature_name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
37
# File 'lib/magick/adapters/redis.rb', line 33

def exists?(feature_name)
  redis.exists?(key_for(feature_name))
rescue StandardError => e
  raise AdapterError, "Failed to check existence in Redis: #{e.message}"
end

#get(feature_name, key) ⇒ Object



14
15
16
17
18
19
# File 'lib/magick/adapters/redis.rb', line 14

def get(feature_name, key)
  value = redis.hget(key_for(feature_name), key.to_s)
  deserialize_value(value)
rescue StandardError => e
  raise AdapterError, "Failed to get from Redis: #{e.message}"
end

#set(feature_name, key, value) ⇒ Object



21
22
23
24
25
# File 'lib/magick/adapters/redis.rb', line 21

def set(feature_name, key, value)
  redis.hset(key_for(feature_name), key.to_s, serialize_value(value))
rescue StandardError => e
  raise AdapterError, "Failed to set in Redis: #{e.message}"
end