Sha256: 0ad4af5f3626a81c5b68ae0120cf73b875392632ac4ed93651bde9b8191b4864
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
module Abaci require "redis" # Common interface for Redis. In the future this could be # swapped out for an alternate datastore. class Store attr_reader :prefix, :redis def initialize(options) @redis = options[:redis] || Redis.current @prefix = options[:prefix] || "stats" end def decrby(key, by = 1) exec(:decrby, key, by) end def del(key) exec(:del, key) end def get(key) exec(:get, key) end def incrby(key, by = 1) exec(:incrby, key, by) end def keys(pattern = "*") sub = Regexp.new("^#{ prefix }:") exec(:keys, pattern).map { |k| k.gsub(sub, "") } end def set(key, value) exec(:set, key, value) end def sadd(key, member) exec_without_prefix(:sadd, "#{ prefix }#{ key }", member) end def smembers(key) exec_without_prefix(:smembers, "#{ prefix }#{ key }") end def srem(key, member) exec_without_prefix(:srem, "#{ prefix }#{ key }", member) end private def exec(command, key, *args) if @redis and @redis.respond_to?(command) @redis.send(command, prefixed_key(key), *args) end end def exec_without_prefix(command, key, *args) if @redis and @redis.respond_to?(command) @redis.send(command, key, *args) end end def prefixed_key(key) [ prefix, key ].compact.join(":") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
abaci-0.3.0 | lib/abaci/store.rb |