Thin wrapper library for Redis, enable any Ruby class to access Redis.
Add this line to your application's Gemfile:
gem 'redisable'
And then execute:
$ bundle
Or install it yourself as:
$ gem install redisable
Use in Rails application. Below redis settings in config/redis.yml
.
# condig/redis.yml
development:
host: localhost
port: 6379
db: 1
test:
host: localhost
port: 6379
db: 0
production:
master_name: apps
failover_reconnect_timeout: 30
sentinels:
- host: redis1.example.com
port: 26379
- host: redis2.example.com
port: 26379
Then, initialize Redisable at config/initializers/redis.rb
.
Redisable::Config.load YAML.load_file(File.join(Rails.root, "config/redis.yml"))
In model, users
, User is ActiveRecord object, but some user_status
is ephemeral or volatile data, so won't record to RDBMS.
Below code is store user_stauts
in Redis.
class User < ActiveRecord::Base
def user_status
@user_status ||= UserStatus.new(id)
end
end
class UserStatus < ActionController::Base
include Redisable
redis_key :followers_ids
redis_key :unread_news_ids
def initialize(id)
@user_id = id
end
def id
@user_id
end
def followers
redis.get followers_ids
end
def unread_news
redis.lrange unread_news_ids, 0, -1
end
...
end
class UsersController
def show(id)
user_status = current_user.user_status
user_status.followers
user_status.unread_news
end
end
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request