标签: ruby-on-rails ruby multithreading sidekiq
Rails 5.0.1,Ruby 2.4.0,Sidekiq 4.2.9
我需要在后台作业中计算一些特定数据。我已经通过Postgres实现了它,但我遇到了问题:Sidekiq并发非常加载数据库连接,如果我减少并发数,那么就业需要花费很多时间。
我发现可以使用原子计数器,并在一段时间内将结果保存到DB。
那么我可以在Sidekiq中的线程之间共享变量吗?如果是,我应该如何初始化共享变量?
感谢您的任何建议
答案 0 :(得分:2)
如果你在线程之间共享一个变量,你需要担心用Mutex锁定它,它只能扩展到一个进程。
而是使用Redis命令增加计数器。
https://redis.io/commands/incr