[英]How do I implement connection pooling for Redis-As-Rails-Cache (using Redis as rails cache) Rails 4.1?
如何為我的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
對於Rails緩存,我們有一個第二Redis實例,具有不同的內存,連接限制和逐出策略
$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'
好的,這就是我的工作。
添加到我的Gemfile
gem 'connection_pool'
對於RAILS CACHE:
為Rails緩存初始化$REDIS_CACHE = Redis.new
不正確,因為Rails在環境文件( config/environments/development.rb
, config/environments/production.rb
等)的config.cache_store
設置內執行此操作
然后,我在環境文件中的初始化如下:
config.cache_store = :redis_store, ENV["REDISCLOUD_FOR_RAILS_CACHE_URL"], {pool_size: 10, pool_timeout: 10}
(您會注意到,將ENV["REDISCLOUD_FOR_RAILS_CACHE_URL"]
設置為完整URI,包括協議,用戶名,密碼,主機和端口。另一種方法是在哈希中將這些參數作為自己的參數傳遞。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.