Sha256: 355886dab21e113bb3bfa4b8634628580674d900741fa1344b604f41f84a3627
Contents?: true
Size: 1.53 KB
Versions: 1
Compression:
Stored size: 1.53 KB
Contents
require "redis-namespace" require "json" module Basket class BackendAdapter class RedisBackend < Basket::BackendAdapter attr_reader :client def initialize redis_connection = select_redis_connection @client = Redis::Namespace.new( Basket.config.namespace, redis: redis_connection ) end def data response = {} @client.scan_each do |queue| response[queue] = deserialized_queue_data(queue) end response end def push(queue, data) @client.lpush(queue, serialize_data(data)) end def length(queue) @client.llen(queue) end def clear(queue) @client.del(queue) end def read(queue) deserialized_queue_data(queue) end private def serialize_data(data) JSON.generate(data) end def deserialized_queue_data(queue) @client.lrange(queue, 0, -1).reverse.map { |serialized_data| JSON.parse(serialized_data) } end def select_redis_connection if Basket.config.redis_url redis_connection_from_url else redis_connection_from_host end end def redis_connection_from_host Redis.new( host: Basket.config.redis_host, port: Basket.config.redis_port, db: Basket.config.redis_db ) end def redis_connection_from_url Redis.new( url: Basket.config.redis_url ) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
basket-0.0.6 | lib/basket/backend_adapter/redis_backend.rb |