我正在使用Rails 4,其中几个名称空间都缓存到单个memcached实例。有没有办法让我清除特定命名空间的所有缓存键而不影响其他命名空间?
答案 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
。 : - /