Rails 4和memcache。我可以清除特定命名空间的缓存吗?

时间:2014-07-24 01:55:28

标签: ruby-on-rails ruby-on-rails-4 memcached

我正在使用Rails 4,其中几个名称空间都缓存到单个memcached实例。有没有办法让我清除特定命名空间的所有缓存键而不影响其他命名空间?

1 个答案:

答案 0 :(得分:0)

我仅在Rails控制台中对此进行了测试,但似乎您可以使用Rails.cache#delete_matched来刷新特定的命名空间。

当您编写值并传递命名空间密钥时,该命名空间密钥将被添加到值的键之前。您可以通过执行以下操作来查看此内容:

cache.write(:foo_key, 'bar_value', namespace: 'baz_namespace')
cache.fetch(:'baz_namespace:foo_key') #=> 'bar_value'

因此,您可以使用#delete_matched清除命名空间中的所有值,如下所示:

Rails.cache.delete_matched(/baz_namespace:/)

<强>更新

遗憾的是,memcached不支持delete_matched。 : - /