我是否需要清除我的Resque'已处理'队列?

时间:2013-09-08 05:52:19

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

我正在使用Resque(和redis)来管理为我的Rails 3应用发送通知电子邮件。

我正在使用Whenever crontab gem每隔30分钟将作业排入队列,以检查是否需要发送通知。

我在resque-web界面注意到每次成功完成时都有一个'已处理'作业。即使我重新启动redis以及我的服务器,似乎这个“已完成”的队列也无法清除。这本身并没有打扰我,但我想确保我不应该以某种方式清除它或某些东西。所有这些完成的工作只是坐在Redis吃掉记忆吗?当Redis达到一定长度时,Redis会自动从它们开始清除吗?

由于

1 个答案:

答案 0 :(得分:1)

Redis中处理的密钥包含有关Resque总共处理了多少个作业的信息,以及不同工作人员的信息。

工作人员完成处理工作后,工作人员会调用done_working,调用processed!

def processed!
  Stat << "processed"
  Stat << "processed:#{self}"
end

Stat是Resque的模块,用于跟踪Resque实例的统计信息。它只保留整数,它不存储所有已完成作业的历史记录,只是整数计数的事情,如:

  • 总共有多少个工作失败
  • 特定工作人员失败的工作数
  • 总共处理了多少个工作
  • 特定工作人员处理了多少个工作

在查看模块的源代码时可以看到这一点,<<只是增加一个整数:

def <<(stat)
  incr stat
end

你不应该担心冲洗它。它与您拥有的工人数量成正比的数据非常少。 Resque会确保失败的工作,但这是一件好事,可能不是你应该冲洗的东西。