sidekiq在线程之间共享变量

时间:2017-03-02 18:30:02

标签: ruby-on-rails ruby multithreading sidekiq

Rails 5.0.1,Ruby 2.4.0,Sidekiq 4.2.9

我需要在后台作业中计算一些特定数据。我已经通过Postgres实现了它,但我遇到了问题:Sidekiq并发非常加载数据库连接,如果我减少并发数,那么就业需要花费很多时间。

我发现可以使用原子计数器,并在一段时间内将结果保存到DB。

那么我可以在Sidekiq中的线程之间共享变量吗?如果是,我应该如何初始化共享变量?

感谢您的任何建议

1 个答案:

答案 0 :(得分:2)

如果你在线程之间共享一个变量,你需要担心用Mutex锁定它,它只能扩展到一个进程。

而是使用Redis命令增加计数器。

https://redis.io/commands/incr