gpt4 book ai didi

Redis 的 Ruby 实例连接

转载 作者:可可西里 更新时间:2023-11-01 11:24:45 28 4
gpt4 key购买 nike

在我跨多个 URL 路由重用 redis 连接的代码中,这是为 Redis 中的单线程定义实例的正确方法吗?

class Red
@conn ||= H2O::Redis.new(:host => '127.0.0.1', :port => 6379)
class << self
attr_reader :conn
end
end


e.g. Route "/set"
require "/www/test.rb"
redis = Red.conn
redis.set(...)

e.g. Route "/get"
require "/www/test.rb"
redis = Red.conn
redis.get(...)

最佳答案

对于在单个进程上运行的单线程 Web 服务器,这绝对是正确的方法。您不会有任何问题,因为 Ruby 的 GIL 确保不会有两行代码并行运行。

question arises当您开始通过 fork 它们来生成多个进程时 - 因为它在修改之前共享内存。并查看一些进行 fork 的服务的文档,他们确实建议您重新建立连接: https://www.phusionpassenger.com/library/indepth/ruby/spawn_methods/#am-i-responsible-for-reestablishing-database-connections-after-the-preloader-has-forked-a-child-process

关于Redis 的 Ruby 实例连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49467417/

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