77

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

我不想清除整个缓存...只是blog/post名称中带有字符串的键(即blog/post/1, blog/post/2)。

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

4

3 回答 3

125

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

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' }
于 2012-08-17T12:23:03.987 回答
14

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

于 2012-08-17T15:16:51.480 回答
3

您可以使用https://github.com/Phobos98/dalli-delete-matched gem,它delete_matched为带有 memcached 的 dalli 存储添加了一个简单的方法实现。

于 2016-04-14T08:17:36.730 回答