2

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

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

我在resque-web界面中注意到每次成功完成时都有一个“已处理”作业。即使我重新启动 redis 和我的服务器,这个“完成”队列似乎永远不会清除。这本身并不困扰我,但我想确保我不应该以某种方式清除它或其他东西。所有这些已完成的工作只是坐在 Redis 中消耗内存吗?当达到一定长度时,Redis 会自动从最旧的开始清除它们吗?

谢谢

4

1 回答 1

1

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

一旦工作人员完成处理工作,done_working就会调用工作人员,该工作人员调用processed!

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

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

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

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

def <<(stat)
  incr stat
end

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

于 2013-09-08T20:33:27.760 回答