2017-03-02 133 views
0

Rails 5.0.1,Ruby 2.4.0,Sidekiq 4.2.9sidekiq共享线程间变量

我需要在后台作业中统计一些特定的数据。我已经通过Postgres实现了它,但是我遇到了问题:Sidekiq并发性非常加载数据库连接,如果我减少并发数,运行作业需要很长时间。

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

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

感谢您的任何建议

+0

您能详细介绍一下您实际上想在sidekiq作业之间共享哪些信息吗? –

+0

我只是应该存储一些数据的计数,并且当这个计数得到限制时,我应该忽略作业并停止处理 –

+0

使用redis会最有意义 – Anthony

回答

0

,你需要担心有互斥锁定它,它只是扩展到一个单一的过程。

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

https://redis.io/commands/incr

+0

所以,使用Mutex是一个坏主意。对? –

+0

那么你放弃sidekiq给你的好处是多线程。 –

+0

我没有说使用Mutex是一个坏主意。我也没有说这是个好主意。 –