是否有可能以某种方式运行Rails.cache.clear
并且只清除具有特定名称/字符串的键?
我不想清除整个缓存...只是blog/post
名称中带有字符串的键(即blog/post/1
, blog/post/2
)。
我正在使用dalli和 memcached 作为我的缓存并运行 Rails 3.0.6。
是否有可能以某种方式运行Rails.cache.clear
并且只清除具有特定名称/字符串的键?
我不想清除整个缓存...只是blog/post
名称中带有字符串的键(即blog/post/1
, blog/post/2
)。
我正在使用dalli和 memcached 作为我的缓存并运行 Rails 3.0.6。
这就是您可以写入缓存的方式 -
Rails.cache.write('key', 'value', :time_to_idle => 60.seconds, :timeToLive => 600.seconds)
为了从缓存中删除,您可以使用delete
操作 -
Rails.cache.delete('key')
删除多个键 -
Rails.cache.delete_if {|k, v| k =~ 'key' }
回答我自己的问题......似乎鉴于我正在使用 memcached,我实际上不能使用delete_if
或者delete_matched
因为 memcached 不支持按模式(1)枚举或查询键。
您可以使用https://github.com/Phobos98/dalli-delete-matched gem,它delete_matched
为带有 memcached 的 dalli 存储添加了一个简单的方法实现。