我在用:


Rails 4.1.0rc2
Heroku
gem 'memcachier'
gem 'dalli'


如果我从控制台使用缓存,则可以使用:

irb(main):010:0> Rails.cache.write("foo", "bar")
=> 1297036692682702848
irb(main):011:0> Rails.cache.read("foo")
=> "bar"


但是,如果我在应用程序中使用Rails.cache.fetch设置了缓存,并尝试通过控制台进行读取,则会得到此信息。

Rails.cache.read([School, "California", [], School.where(state: "California").all.map(&:updated_at).max, "city_filters"])
Dalli::Server#connect mc3.dev.ec2.memcachier.com:11211
Dalli/SASL authenticating as 451265
Dalli/SASL authenticating as 451265
Dalli/SASL: 451265
Dalli/SASL: 451265
=> [{:type=>"city", :value=>"San Francisco", :count=>11, :current=>false}]


但是,当我在应用程序中运行此命令时,每次都会进行一次新搜索。

Completed 200 OK in 8481ms (Views: 1151.4ms | ActiveRecord: 246.6ms)


缓存在本地工作(不是完整的缓存)。

Completed 200 OK in 655ms (Views: 244.5ms | ActiveRecord: 74.5ms)


如何使memcached / dalli工作?我在另一个应用程序中工作过;对我来说似乎是相同的设置。

最佳答案

确保在heroku上配置memcachier插件,并且在您的环境中具有其凭据(运行:heroku config)。还要确保您的memcachier&dalli宝石没有嵌套在任何宝石组中,以便可以在生产中使用。

10-08 05:16