このようなgemもありますが
https://github.com/oggy/redis_master_slave
config/initializers
に数行加えるだけで振り分けが可能です。
コネクションプール等を使ってると不具合があるかもしれません。
config/initializers/redis.rb
class Redis
class Client
def call(command, &block)
master_host = MASTER_HOST_URI
slave_host = SLAVE_HOST_URI
# Slave に向けたいお好きなコマンドを登録
slave_commands = [:get, :hget, :hgetall]
disconnect
@options[:host] = if slave_commands.include?(command[0])
slave_host
else
master_host
end
connect
reply = process([command]) { read }
raise reply if reply.is_a?(CommandError)
if block
block.call(reply)
else
reply
end
end
end
end