Sha256: 77c6812e1b069040b29ae40444dced49bf5206acdf65caecd1cacd4de5dd7fd7

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

module Ohm

  # Represents a key in Redis.
  class Key < String
    attr :redis

    def initialize(name, redis = nil)
      @redis = redis
      super(name.to_s)
    end

    def [](key)
      self.class.new("#{self}:#{key}", @redis)
    end

    def volatile
      self.index("~") == 0 ? self : self.class.new("~", @redis)[self]
    end

    def +(other)
      self.class.new("#{self}+#{other}", @redis)
    end

    def -(other)
      self.class.new("#{self}-#{other}", @redis)
    end

    [:append, :blpop, :brpop, :decr, :decrby, :del, :exists, :expire,
    :expireat, :get, :getset, :hdel, :hexists, :hget, :hgetall,
    :hincrby, :hkeys, :hlen, :hmget, :hmset, :hset, :hvals, :incr,
    :incrby, :lindex, :llen, :lpop, :lpush, :lrange, :lrem, :lset,
    :ltrim, :move, :rename, :renamenx, :rpop, :rpoplpush, :rpush,
    :sadd, :scard, :sdiff, :sdiffstore, :set, :setex, :setnx, :sinter,
    :sinterstore, :sismember, :smembers, :smove, :sort, :spop,
    :srandmember, :srem, :substr, :sunion, :sunionstore, :ttl, :type,
    :zadd, :zcard, :zincrby, :zinterstore, :zrange, :zrangebyscore,
    :zrank, :zrem, :zremrangebyrank, :zremrangebyscore, :zrevrange,
    :zrevrank, :zscore, :zunionstore].each do |meth|
      define_method(meth) do |*args|
        redis.send(meth, self, *args)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ohm-0.1.0.rc5 lib/ohm/key.rb