Sha256: 0eaf6ffd4754eb75431be3b18f754b54744522b1dec0e0488c5b11ebc16f6731

Contents?: true

Size: 1.8 KB

Versions: 3

Compression:

Stored size: 1.8 KB

Contents

require 'redis'
require 'json'

module SplitIoClient
  module Cache
    module Adapters
      class RedisAdapter
        def initialize(redis_url)
          connection = redis_url.is_a?(Hash) ? redis_url : { url: redis_url }

          @redis = Redis.new(connection)
        end

        # Map
        def initialize_map(key)
          # No need to initialize hash/map in Redis
        end

        def add_to_map(key, field, value)
          @redis.hset(key, field, value)
        end

        def find_in_map(key, field)
          @redis.hget(key, field)
        end

        def delete_from_map(key, field)
          @redis.hdel(key, field)
        end

        def in_map?(key, field)
          @redis.hexists(key, field)
        end

        def map_keys(key)
          @redis.hkeys(key)
        end

        def get_map(key)
          @redis.hgetall(key)
        end

        # String
        def string(key)
          @redis.get(key)
        end

        def set_string(key, str)
          @redis.set(key, str)
        end

        def find_strings_by_prefix(prefix)
          @redis.keys("#{prefix}*")
        end

        # Bool
        def set_bool(key, val)
          @redis.set(key, val.to_s)
        end

        def bool(key)
          @redis.get(key) == 'true'
        end

        # Set
        alias_method :initialize_set, :initialize_map

        def add_to_set(key, val)
          @redis.sadd(key, val)
        end

        def delete_from_set(key, val)
          @redis.srem(key, val)
        end

        def get_set(key)
          @redis.smembers(key)
        end

        def in_set?(key, val)
          @redis.sismember(key, val)
        end

        # General
        def exists?(key)
          @redis.exists(key)
        end

        def delete(key)
          @redis.del(key)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
splitclient-rb-3.1.0.pre.rc5 lib/cache/adapters/redis_adapter.rb
splitclient-rb-3.1.0.pre.rc4 lib/cache/adapters/redis_adapter.rb
splitclient-rb-3.1.0.pre.rc2 lib/cache/adapters/redis_adapter.rb