2010-06-16 104 views
1

我有一個rails應用程序,它是一種存儲庫。 存儲在該模型的數據庫中的記錄(幾乎)不會更改,但始終會被讀取。也沒有很多。 我想以通用的方式將這些記錄存儲在緩存中。 我想這樣做acts_as_cached,但這裏是我的問題:在rails中緩存模型

  • 爲緩存我找不到行徑體面的文件(無論是我能找到它的資料庫)

  • 我不想使用memcached,但更簡單一些(靜態變量,或類似的東西)。

你知道我可以用來做什麼寶石嗎?

感謝

編輯

我仍然在尋找類似的cache_flu但沒有memcached的

回答

0

acts_as_cached東西被cache_fu取代。

+0

有沒有類似cache_fu不會使用memcache但更簡單的東西? – Arthur 2010-06-25 10:43:31

0

您可以將數據存儲在Rails默認緩存中,或者,似乎是最流行的選擇,請使用使用memcached的mem_cache_store。

#production.rb 

config.cache_store = :mem_cache_store, '127.0.0.1:11211', {:namespace => "production"} 

#some_helper.rb 

def get_some_data 
    Rails.cache.fetch('some_reference'){Model.find_some_data} 
end 

參見: http://guides.rubyonrails.org/caching_with_rails.html

另外,如果你使用的乘客你需要這樣做:

if defined?(PhusionPassenger) 
    PhusionPassenger.on_event(:starting_worker_process) do |forked| 
    if forked 
     Rails.cache.instance_variable_get(:@data).reset if Rails.cache.class == ActiveSupport::Cache::MemCacheStore 
    else 
     # No need to do anything. 
    end 
    end 
end 
+0

正如我所說的,我不想使用memcached,但實施起來太重了。我想要簡單的東西。 – Arthur 2010-06-20 10:12:16

+0

我猜SQL緩存在我的情況下會提升性能。我可能不需要別的東西,但是像cache_flu這樣可以在沒有記憶的情況下工作會很酷 – Arthur 2010-06-20 10:31:08

1

你能否將數據存儲在一個文件並加載它變成常數(如Ruby on Rails: Talk所示):

require "yaml" 
class ApplicationController < ActionController::Base 
    MY_CONFIG = YAML.load(File.read(File.join(RAILS_ROOT, "config", "my_config.yml"))) 
end 
1

我開始了一個名爲cache_me的gem,它可以與任何cache_store一起使用,它可以在Alpha模式下工作,但你可以嘗試然後打開一些pull請求/問題。

https://github.com/arunagw/cache_me

我會讓你知道什麼時候它已經準備好使用全模式。