Skip to content

robotblake/redis-model

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Minimal models for Redis

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%