28
A
回答
27
ActiveSupport::Cache::MemoryStore沒有提供直接訪問商店密鑰的方法(其父類ActiveSupport::Cache::Store也不提供)。
內部MemoryStore的保持一切都在一個叫做@data
哈希,但是,這樣您就可以猴子補丁或繼承它拿到鑰匙,例如:
class InspectableMemoryStore < ActiveSupport::Cache::MemoryStore
def keys
@data.keys
end
end
ActionController::Base.cache_store = InspectableMemoryStore.new
Rails.cache.keys # => [ "foo", ... ]
這都與通常的警告,但是:MemoryStore的內部實施可能會隨時更改,並且@data
可能會消失或被更改爲不會respond_to? :keys
的內容。更智能的實現可能覆蓋write
和delete
方法(因爲,作爲公共API的一部分,他們不太可能意外更改),以保持自己的鑰匙列表,如:
class InspectableMemoryStore < ActiveSupport::Cache::MemoryStore
def write *args
super
@inspectable_keys[ args[0] ] = true
end
def delete *args
super
@inspectable_keys.delete args[0]
end
def keys
@inspectable_keys.keys
end
end
這是一個非常幼稚的實現,當然保持鍵在一個額外的結構佔用一些記憶,但你得到的主旨。
1
如果您不需要動態訪問密鑰,更簡單的方法是找到緩存存儲的目錄。爲每個條目創建一個文件。
在此我的情況是,在「APP_ROOT的/ tmp /緩存」,但是你可以很容易地將軌道控制檯,輸入找到它
1.8.7 :030 > Rails.cache.clear
=> ["path_to_rails_app/tmp/cache/6D5"]
+5
但是你的解決方案只在文件緩存中起作用。如果我使用memcached作爲後端緩存,這是行不通的。 – qichunren 2013-04-07 08:07:42
53
相關問題
- 1. 如何在Ruby on Rails中將數據存儲在內存中
- 2. Ruby on Rails - 緩存變量
- 3. Ruby on Rails - 類緩存?
- 4. Android密鑰存儲區存儲令牌
- 5. 如何計算c#緩存密鑰存儲時消耗的內存空間?
- 6. Android的密鑰存儲提供商 - 如何存儲密鑰
- 7. Ruby on Rails中的文件存儲庫
- 8. Ruby on Rails中的存儲過程
- 9. Ruby on Rails的 - 從緩存DIV
- 10. 如何在高速緩存中存儲密鑰範圍
- 11. 存儲密鑰
- 12. 爪哇 - 如何存儲密鑰,密鑰存儲
- 13. 存儲密鑰
- 14. 使用存儲在Windows密鑰存儲區中的密鑰作爲OpenSSL中的預共享密鑰
- 15. 解密存儲Java密鑰存儲
- 16. Ruby on Rails的會話存儲問題
- 17. Ruby on Rails的 - 存儲PARAMS數據庫
- 18. 如何同時使用Memcache和Ruby On Rails默認的內存存儲?
- 19. on Rails的3.1 Ruby on Rails的緩存圖像錯誤
- 20. 在Android上存儲密鑰
- 21. 保存Ruby on Rails
- 22. 如何緩存/加速Ruby on Rails中的下拉框數據
- 23. Ruby on Rails計數器緩存錯誤
- 24. 用Ruby on Rails緩存登錄表單
- 25. Ruby on Rails裝飾器緩存結果?
- 26. SSL中使用的信任存儲和密鑰存儲如何?
- 27. Ruby on Rails的內存泄漏
- 28. 如何創建第二個Rails內存存儲緩存?
- 29. ECDSA密鑰存儲
- 30. 如何保存在Ruby on Rails的
我只是想確認鍵的名稱。這將做的伎倆,非常感謝! – Nerian 2012-03-07 18:09:33
什麼是我設置'ActionController :: Base.cache_store = InspectableMemoryStore.new'的文件? – Paul 2014-10-27 13:27:44
@Paul在您的環境文件中,例如'配置/環境/ development.rb'。如果它在'Rails.application.configure do ... end'塊內,那麼它就是'config.cache_store = InspectableMemoryStore.new'。 – jwadsack 2016-01-10 21:06:21