0.01
No commit activity in last 3 years
No release in over 3 years
Minimal model support for redis-rb. Directly maps ruby properties to model_name:id:field_name keys in redis. Scalar, list and set properties are supported.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.2.8

Runtime

>= 0.0.1
 Project Readme

redis-model¶ ↑

Minimal model support for [redis-rb](github.com/ezmobius/redis-rb). Directly maps ruby properties to model_name:id:field_name keys in redis. Scalar, list and set properties are supported.

Values can be marshaled to/from Integer, Float, DateTime, JSON. See Redis::Model::Marshal for more info.

Define¶ ↑

require 'redis/model'

class User < Redis::Model
  field :name,      :string
  field :created,   :datetime
  field :profile,   :json

  list  :posts,     :json

  set   :followers, :int
end

Write¶ ↑

u = User.with_key(1)
u.name = 'Joe'                      # set user:1:name Joe
u.created = DateTime.now            # set user:1:created 2009-10-05T12:09:56+0400
u.profile = {                       # set user:1:profile {"sex":"M","about":"Lorem","age":23}
  :age => 23,                       
  :sex => 'M',                      
  :about => 'Lorem'                 
}                                   
u.posts << {                        # rpush user:1:posts {"title":"Hello world!","text":"lorem"}
    :title => "Hello world!",
    :text  => "lorem"
}           
u.followers << 2                    # sadd user:1:followers 2

Read¶ ↑

u = User.with_key(1)
p u.name                            # get user:1:name
p u.created.strftime('%m/%d/%Y')    # get user:1:created
p u.posts[0,20]                     # lrange user:1:posts 0 20
p u.posts[0]                        # lindex user:1:posts 0
p u.followers.has_key?(2)           # sismember user:1:followers 2