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