Redisable Build Status

Thin wrapper library for Redis, enable any Ruby class to access Redis.

Installation

Add this line to your application's Gemfile:

gem 'redisable'

And then execute:

$ bundle

Or install it yourself as:

$ gem install redisable

Usage

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

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request