ruby - Rack 上的 Redis 连接管理

标签 ruby redis rack

如果我使用 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/

相关文章:

ruby - ruby 中的时间操作

ruby-on-rails - 为什么大多数 Ruby/Rack 应用程序以这种方式引导?

ruby - 续集 gem 身份/自然元素

node.js - 我在我的集​​群 node.js/socket.io/redis pub/sub 应用程序中收到重复消息

ruby-on-rails - 使用 RSpec 测试 Rails Metal/Rack?

ruby-on-rails - 如何从 Rails 3 中托管的 Rack 应用程序中获取命名路由?

ruby-on-rails - 通过 Rack 中间件向 Rails 添加 'SameSite=None;' cookie?

ruby - 如何让 Rake 任务在所有其他任务之后运行? (即 Rake AfterBuild 任务)

caching - Redis用于缓存图像文件?

python - 如何在 Python-RQ 中创建多个 worker?