簡體   English   中英

如何為Redis-As-Rails-Cache(使用Redis作為Rails緩存)Rails 4.1實現連接池?

[英]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.rbconfig/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM