ruby-on-rails - 我需要清除我的 Resque 'processed' 队列吗?

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

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

我正在使用 Whenever crontab gem 每 30 分钟对一个作业进行排队,以检查是否需要发送通知。

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

谢谢

最佳答案

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

一旦工作人员处理完工作, done_working 调用 worker ,调用 processed! :

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

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

  • 总共失败了多少个作业
  • 一个特定的 worker 有多少工作失败了
  • 总共处理了多少作业
  • 一个特定的 worker 处理了多少个工作

查看模块源代码时可以看到这一点,<<简单地增加一个整数:

def <<(stat)
  incr stat
end

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

关于ruby-on-rails - 我需要清除我的 Resque 'processed' 队列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680864/

相关文章:

ruby-on-rails - Gem::Ext::BuildError:错误:无法构建 gem native 扩展。 postgresql 和 ROR

ruby-on-rails - 在关联上使用 class_name 时接受_nested_attributes_for

ruby-on-rails - 影响 aws-sdk ruby​​ gem url_for 方法的文件名中的特殊字符

ruby-on-rails-3 - Rails 3 库直到需要才加载

c# - 从 .net 核心使用 ServiceStack Redis 并连接到 Sentinel 设置

ruby-on-rails - 在 Rails 中按类别显示产品

ruby-on-rails - 新添加的列的数据未保存到数据库

ruby-on-rails - 为什么 Time.parse 在 Rails 4 和 5 中失败,但在 Rails 3 中对于日期和时间之间有空格的日期字符串却没有?

redis - 什么是 Redis "out_"前缀键?

javascript - Express Node.JS - 接收 Redis 回调,执行 promise