你可以在Resque旁边使用Redis吗?

时间:2011-08-15 19:15:42

标签: ruby-on-rails ruby heroku redis resque

我在Heroku上使用Redis To Go,我想用它来存储一些数据以及Resque作业,就像我可以将DelayedJobs存储在与我的其他模型数据相同的Postgres数据库中。

这可能吗?注意简要解释Resque如何在Redis中存储工作?我是Redis的新手,虽然我在更高层次上了解它是如何工作的,但我对实现细节并不熟悉。

3 个答案:

答案 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可用于其他目的,不仅用于后台处理。顺便说一下,R​​escue提供了简单的界面来设置/配置/使用/浏览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内容,而不仅仅是后台处理