我在應用程序中使用memcached(gem memcache-client
),但我想同時使用內存緩存存儲。目前,我有我的application.rb
如下:如何同時使用Memcache和Ruby On Rails默認的內存存儲?
config.cache_store = :mem_cache_store, {:namespace => "my_namespace_#{Rails.env}"}
,這正常工作與命令,如Rails.cache.write(...)
我如何使用ActiveSupport::Cache::MemoryStore
我的一些車型,並在同一時間使用memcached的其他我到現在爲止的理由?
我知道ActiveSupport::Cache.lookup_store
會還給我一個新的MemoryStore
對象。但是,從這一點我不知道如何繼續?例如,我在哪裏放這個命令?我在哪裏存儲結果對象?以後如何從模型代碼中訪問此對象?或者我應該採用完全不同的方式?
在此先感謝您的幫助。
沒有真正回答你的問題,但只是好奇,爲什麼你在你的應用程序需要兩個店? – leonardoborges 2012-01-13 11:28:19
我想我可能會爲我想要立即訪問的某些型號獲得更好的性能。而不是必須進行進程間通信(當memcached在同一臺服務器上)或intermachine通信(當memcached在不同的服務器上時),我將從進程內存訪問我的對象。 – 2012-01-13 11:55:47
但是,我明白了,那是因爲你只有一個進程正在運行。如果你有多個進程,內存存儲將不會被共享,所以如果你的用戶點擊一個沒有加載對象到內存的進程,它會再次打到DB,每個進程有一次。這並沒有真正擴展,總體來說你最好使用memcached。除非你正在運行一個流程應用程序,而且這個應用程序不會很快改變。 – leonardoborges 2012-01-13 12:57:12