gpt4 book ai didi

ruby-on-rails - 如果我不在 after_fork 中 $redis = Redis.new 会发生什么?

转载 作者:IT王子 更新时间:2023-10-29 06:04:09 25 4
gpt4 key购买 nike

不把 $redis = Redis.new 放在 Unicorn 的 after_fork 中有什么负面影响,因为 redis-rb 是线程安全的?假设我有不止一名 worker 。

而不是仅仅将那行代码放在 environment.rb 或初始化器中?

最佳答案

after_fork 与线程安全关系不大。它在父进程派生子进程时使用,而不是在生成线程时使用。

为什么要关心

如果你从不 fork ,你可能不会。

当你 fork 时,父进程和子进程共享文件和套接字描述符(数据库连接、redis 连接)。如果您不重新打开子项中与 Redis 的连接,则来自父项的数据可以在套接字上与来自子项的数据交错。

阅读A Unix Shell in Ruby Pipes以获得对正在发生的事情的更详细的描述。

关于ruby-on-rails - 如果我不在 after_fork 中 $redis = Redis.new 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12662634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com