我正在使用Resque
(和redis)来管理为我的Rails 3应用发送通知电子邮件。
我正在使用Whenever
crontab gem每隔30分钟将作业排入队列,以检查是否需要发送通知。
我在resque-web
界面注意到每次成功完成时都有一个'已处理'作业。即使我重新启动redis以及我的服务器,似乎这个“已完成”的队列也无法清除。这本身并没有打扰我,但我想确保我不应该以某种方式清除它或某些东西。所有这些完成的工作只是坐在Redis吃掉记忆吗?当Redis达到一定长度时,Redis会自动从它们开始清除吗?
由于
答案 0 :(得分:1)
Redis中处理的密钥包含有关Resque总共处理了多少个作业的信息,以及不同工作人员的信息。
工作人员完成处理工作后,工作人员会调用done_working
,调用processed!
:
def processed!
Stat << "processed"
Stat << "processed:#{self}"
end
Stat
是Resque的模块,用于跟踪Resque实例的统计信息。它只保留整数,它不存储所有已完成作业的历史记录,只是整数计数的事情,如:
在查看模块的源代码时可以看到这一点,<<
只是增加一个整数:
def <<(stat)
incr stat
end
你不应该担心冲洗它。它与您拥有的工人数量成正比的数据非常少。 Resque会确保失败的工作,但这是一件好事,可能不是你应该冲洗的东西。