【问题标题】:Count specific scheduled Sidekiq jobs with Redis使用 Redis 计算特定计划的 Sidekiq 作业
【发布时间】:2018-08-28 15:59:13
【问题描述】:

有没有办法使用 Redis 来检索以下作业计数?

Sidekiq::ScheduledSet.new.inject(0) do |memo, job|
  memo += 1 if job.at <= Time.now
  memo
end

即计划的作业应该已经运行,但没有运行。这适用于较小的队列大小,但不适用于较大的队列(60k 计划作业需要 30 多秒)。谢谢!

【问题讨论】:

    标签: ruby-on-rails redis sidekiq


    【解决方案1】:
    "ZRANGEBYSCORE schedule '-inf' #{Time.now.to_f}"
    

    https://redis.io/commands/zrangebyscore

    【讨论】:

    • 传奇。谢谢,迈克!
    【解决方案2】:

    受 Mike 的启发,我采用了以下方法:

    Sidekiq.redis { |c| c.zcount('schedule', '-inf', Time.now.to_f) }
    

    【讨论】:

    • 很好,我喜欢可以接受我的建议并改进它的用户!
    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多