我在Heroku上使用Redis To Go,我想用它来存储一些数据以及Resque作业,就像我可以将DelayedJobs存储在与我的其他模型数据相同的Postgres数据库中。
这可能吗?注意简要解释Resque如何在Redis中存储工作?我是Redis的新手,虽然我在更高层次上了解它是如何工作的,但我对实现细节并不熟悉。
答案 0 :(得分:5)
是的,你可以。根据Resque文件:
Resque有一个redis setter,可以给它一个字符串或一个Redis对象。这意味着如果您已在应用中使用Redis,则Resque可以重新使用现有连接。
此外,Resque.redis=
的文档声明接受了命名空间,以防止与在同一实例上运行的其他应用发生冲突:
'hostname:port / namespace'字符串(用于设置Redis名称空间)
有关详细信息,请查看Resque自述文件的“配置”部分:https://github.com/resque/resque/blob/master/README.markdown
答案 1 :(得分:1)
Redis是一个高级键值存储,Resque使用它来存储有关作业的数据。确切的细节取决于您的应用程序,但两者应该很好地协同工作。只要您的代码远离使用Resque使用的列表,那么您将是金色的。
答案 2 :(得分:1)
是的,完全同意其他答案,Redis可用于其他目的,不仅用于后台处理。顺便说一下,Rescue提供了简单的界面来设置/配置/使用/浏览Redis。
<强>设置/运行强>
$ git clone --depth=1 git://github.com/defunkt/resque.git
$ cd resque
$ rake redis:install dtach:install
$ vim config/resque.yml
"development: localhost:6379"
$ vim config/initializers/rescue.rb
"rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'
resque_config = YAML.load_file(rails_root + '/config/resque.yml')
Resque.redis = resque_config[rails_env]"
$ rake redis:start
使用强>
# model
def user_activity
a = Resque.redis.lrange "log_" + self.id.to_s, 0, -1
a.map{|i| JSON.parse(i)}
end
浏览强>
$ resque-web
它允许您浏览Redis内容,而不仅仅是后台处理