如果我使用 ActiveRecord,我必须使用这个中间件:
use ActiveRecord::ConnectionAdapters::ConnectionManagement
这将在每次请求后关闭连接。
我想知道如果我想使用 Ruby 的官方 Redis gem 是否必须使用类似的东西?
还是关闭连接/自行管理?
谢谢
最佳答案
您不必在每次请求后关闭连接。事实上,常见的方法是为每个应用程序服务器(例如每个 unicorn worker)建立一个全局 Redis 连接,所有请求都将使用该连接并保持打开但空闲。 Redis 会处理此问题,因此您不必这样做。
只要您的应用服务器正在运行,此连接就会保持打开状态,但由于 Redis 使用非阻塞 IO,因此它不会产生任何负面影响,因此处于非阻塞状态。
我想不出在每次请求时打开和关闭连接的充分理由。事实上,这只会增加不必要的开销(每次都必须创建和拆除套接字)。
这里有相关讨论:https://groups.google.com/forum/#!topic/redis-db/xcz5MXykXdk
关于ruby - Rack 上的 Redis 连接管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21027044/