Sha256: 0382d08506cf1ce6d7a84db3a9ba2cc5f1f6695d34253512e436c579944a28a5
Contents?: true
Size: 1.8 KB
Versions: 1
Compression:
Stored size: 1.8 KB
Contents
= Redis Classy Model-friendly base class for Redis. With this library, the class name of your model becomes the prefix part of the Redis keys. This library contains only 27 lines of code, yet powerful when you need more abstraction on Redis objects rather than dealing with complicated keys in all strings. Requies the redis-namespace gem. == Install gem install redis-classy == Usage In Gemfile: gem "redis-classy" In your initializer: Redis::Classy.db = Redis.new Now you can write models that inherit the Redis::Classy class, automatically prefixing keys with its class name. class UniqueUser < Redis::Classy def self.nuke self.keys.each{|key| self.del(key) } end end UniqueUser.sadd "2011-02-28", @user_a.id UniqueUser.sadd "2011-02-28", @user_b.id UniqueUser.sadd "2011-03-01", @user_c.id UniqueUser.smembers "2011-02-28" => ["123", "456"] UniqueUser.nuke => ["2011-02-28", "2011-03-01"] UniqueUser.keys => [] In most cases you may be just fine with class methods, but by creating an instance with a key, even further binding is possible. class Counter < Redis::Classy def initialize(object) super("#{object.class.name}:#{object.id}") end end counter = Counter.new(@room) counter.incr counter.incr counter.get => "2" counter.key => "Room:123" You also have access to the non-namespaced, raw Redis instance via Redis::Classy.db Redis::Classy.db.keys "UniqueUser:*" => ["UniqueUser:2011-02-28", "UniqueUser:2011-03-01"] Redis::Classy.db.multi do UniqueUser.sadd "2011-02-28", @user_a.id UniqueUser.sadd "2011-02-28", @user_b.id end Since the "db" attribute is a class instance variable, you can dynamically assign different databases for each class. UniqueUser.db = Redis::Namespace.new("UniqueUser", :redis => Redis.new(:host => "another.host"))
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
redis-classy-0.9.0 | README.rdoc |