【发布时间】:2017-07-06 08:36:54
【问题描述】:
如何将连接池添加到我的 Redis 设置中?
由于某种原因,我似乎无法找到任何有关此的信息。我正在使用 redis (3.2.0) 设置如下: (你可以假设 resque_uri 和 cache_uri 在这个 c 之前已经被解析)
对于resque:
$REDIS_BACKGROUND_JOB = Redis.new(:host => resque_uri.host,
:port => resque_uri.port,
:password => resque_uri.password)
在初始化序列的后面,我们这样做
Resque.redis = $REDIS_BACKGROUND_JOB
我们有第二个 Redis 实例,它具有不同的内存、连接限制和驱逐策略,用于 Rails 缓存
$REDIS_CACHE = Redis.new(:host => cache_uri.host,
:port => cache_uri.port,
:password => cache_uri.password)
更新 2017-02-16@20-17EST:我正在运行两个 redis 实例,一个用于 resque (1.25.2),另一个用于使用 redis-rails (5.0.1) 的缓存层。我已经更新了上面的设置示例。我怀疑初始化中配置错误或存在基本设置不匹配。
更新 2017-02-16@21-37EST:
environments/development.rb有
config.cache_store = :redis_store, 'redis://localhost:6379/1/cache_store'
【问题讨论】:
-
虽然我找到了一些示例来展示如何使用 ConnectionPool.new,但我不确定如何使用以下语法将其连接到 config/application.rb 中配置的 Rails 缓存:
config.cache_store = :redis_store, "redis://localhost:6379/0/cache" -
我还想在此处补充一点,我无法让连接池在 Resque 上工作;它在 Resque 代码中出错。 (但是当我试图实例化一个基本的 Redis.new 对象时,我已经能够获得一个基本的 ConnectionPool 与
gem 'connection_pool'一起使用。但是,正如您将在config/application.rb中注意到的那样,Rails 的缓存存储是由config.cache_store和我配置的我不确定如何添加连接池) -
@Sooraj -- 是的,我看过那个文档,但是 Rails 缓存如何知道打开该池连接而不是打开它自己的连接?这篇 SO 帖子是指将 Redis 用于 Sidekiq,这不是我的障碍。我不明白如何为 Rails 缓存汇集连接(我什至需要吗?)。我确实理解这篇 SO 帖子显示了如何轮询 Sideqik 的连接
-
@Sooraj -- 我承认我的问题将两种设置混为一谈——一种用于 Resque,另一种用于 Rails 缓存。我相信两者的混为一谈是我的问题,但我还没有弄清楚。您提供的链接是让连接池在 Sideqik 上工作的示例,因此我想取消它作为此问题的答案的资格,因为它没有回答问题的根源:如何配置 Rails 缓存以使用池化的redis实例?
标签: ruby ruby-on-rails-4 redis resque redis-rails