2016-12-18 52 views
0

我在我的Mac Sierra機器上使用Rails 4.2.7(PostGres 9.5)。我想使用內存緩存來緩存一些更常見的數據庫查詢。例如,下面是一些高速緩存方法的典範......如何讓Rails使用我的內存緩存而不是數據庫?

class DistanceUnit < ActiveRecord::Base 

    def self.cached_find_by_id(id) 
    Rails.cache.fetch("#{id}") do 
     find_by_id(id) 
    end 
    end 

    def self.cached_find_by_abbrev(abbrev) 
    Rails.cache.fetch("#{abbrev}") do 
     find_by_abbrev(abbrev) 
    end 
    end 

end 

我調用「cached_find_by_id」和「cached_find_by_abbrev」在我的應用程序。然後在我的./config/environments/development.rb文件我有

config.action_controller.perform_caching = true 
    ... 
    # Enable the Rails cache 
    config.cache_store = :memory_store 

但是當我在本地運行我的申請,我注意到SQL查詢運行...

DistanceUnit Load (0.4ms) SELECT "distance_units".* FROM "distance_units" WHERE "distance_units"."id" = $1 LIMIT 1 [["id", 4]] 

… 

    DistanceUnit Load (0.3ms) SELECT "distance_units".* FROM "distance_units" WHERE "distance_units"."id" = $1 LIMIT 1 [["id", 4]] 

,我需要些什麼如何讓Rails使用我的緩存方法? Rails似乎根本沒有使用我的內存緩存。

回答

0

你應該能夠在development.rb這就是perform_caching:

config.action_controller.perform_caching = true 

一旦完成。重新啓動您的控制檯。觸發該方法。第一次它將從數據庫加載,下一次它將從你的memcache加載。

此外,我會推薦您使用Shopify的identify_cache寶石。

相關問題