Yar*_*rin 9 memcached caching ruby-on-rails heroku
我们需要一个Rails缓存解决方案,它可以在Heroku上使用多个dyno组合.具体来说,我们需要工作人员dynos处理长时间运行的任务来写入我们的web dynos可以读取的缓存.
显然,在dynos中实现共享缓存的唯一方法是使用Memcached.但是,我无法找到有关如何完成此操作的客观指示.(Heroku文档由Memcached附加供应商编写,如MemCachier,正在推广他们的产品.)
我的问题:
(@ItamarHaber回答了这个问题,然后把它卖给了memcached云.只想展示我们是如何实现它的)
使用带有Rails 4的Memcached Cloud附加组件:(从Rails 3的指令派生)
将Dalli添加到您的Gemfile:
gem 'dalli'
Run Code Online (Sandbox Code Playgroud)
在config/environments/production.rb中设置cache_store :
# NOTE: ENV vars aren't available during slug comiplation, so must check if they exist:
if ENV["MEMCACHEDCLOUD_SERVERS"]
config.cache_store = :mem_cache_store, ENV["MEMCACHEDCLOUD_SERVERS"].split(','), { :username => ENV["MEMCACHEDCLOUD_USERNAME"], :password => ENV["MEMCACHEDCLOUD_PASSWORD"] }
end
Run Code Online (Sandbox Code Playgroud)
更新:
经过一番研究后,我们意识到Redis可以为我们提供Memcached缓存的所有好处以及一系列其他功能.Memcached Cloud的制造商Redis Labs也提供了Redis Cloud添加功能,它同样易于使用:
在Rails 4中使用Redis Cloud附加组件:
将Redis添加到您的Gemfile:
gem 'redis-rails'
Run Code Online (Sandbox Code Playgroud)
在config/environments/production.rb中设置cache_store :
# NOTE: ENV vars aren't available during slug comiplation, so must check if they exist:
if ENV["REDISCLOUD_URL"]
config.cache_store = :redis_store, ENV["REDISCLOUD_URL"], { expires_in: 90.minutes }
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2702 次 |
最近记录: |