ruby-on-rails - sidekiq 在线程之间共享变量

标签 ruby-on-rails ruby multithreading sidekiq

Rails 5.0.1、Ruby 2.4.0、Sidekiq 4.2.9

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

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

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

谢谢你的建议

最佳答案

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

相反,使用 Redis 命令来递增计数器。

https://redis.io/commands/incr

关于ruby-on-rails - sidekiq 在线程之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42563169/

相关文章:

multithreading - 玩!框架 : Limit concurrent non-blocking IO calls made via WS

c++ - 使用多个线程并行化此 for 循环的最佳方法

ruby-on-rails - CKEditor 工具栏使用错误的图标文件(通过 Rails "rich"gem)

ruby-on-rails - LearnRubyTheHardWay Ex#46 - rake 中止,你应该需要 'minitest/autorun'

ruby-on-rails - 是否有使用 ActiveResource 和 XMLRPC for Rails 的示例?

mysql - Ruby on Rails - bundler MySQL 错误 : Failed to build gem native extension

mysql - Ruby 跨多个表的高级事件记录查询

javascript - 使用 Facebook Javascript SDK 时在 Rails 中获取 Cookie 服务器端

ruby-on-rails - Rails 是否维护多个 URL 数组参数的顺序

python - 如何让两个python程序交互?