Rails.cache.clear某些键名?


69

是否有可能以某种方式运行Rails.cache.clear并且仅清除具有特定名称/字符串的键?

我不想清除整个缓存...只是用钥匙串blog/post的名称(即blog/post/1blog/post/2)。

我正在使用带有memcached的dalli作为我的缓存并运行Rails 3.0.6。

Answers:


116

这是您可以写入缓存的方式-

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' }

是的,但是我需要删除名称中包含特定字符串的所有键。例如,所有具有键blog/post名称的键。
Shpigford 2012年

1
@ShpigfordRails.cache只是hash..look的哈希文档,以便删除多个键:)
Sandip Ransing 2012年

9
我收到的“未定义方法”错误delete_if。我正在运行Rails 3.0.6。
Shpigford 2012年

另外,忘了提一下,我使用的是Dalli w / memcached作为缓存。
Shpigford 2012年

对于EH缓存来说,空闲时间和生存时间似乎只是guides.rubyonrails.org/…–
网站

13

要回答我自己的问题...似乎在给定我正在使用memcached的情况下,我实际上不能使用,delete_if或者delete_matched因为memcached不支持按模式(1)枚举或查询键。


18
那么,使用memcache的解决方案是什么?
Gaurav Saini 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.