如何删除memcached中的一系列键(使用Dalli + RoR)

时间:2012-01-16 14:08:52

标签: ruby-on-rails memcached dalli

我正在运行Ruby on Rails并使用Dalli gem来访问memcached。

问题:如何删除一系列键(不是多个键,而是一个范围),例如:使用以“USERINFO”开头的键删除所有memcached条目,换句话说,如何使用通配符删除一系列钥匙?

2 个答案:

答案 0 :(得分:0)

简短的回答是,不,你不想这样做。

dalli gem和memcached支持使用开箱即用的单个命令删除多个键,这是有充分理由的。由于memcached通过散列密钥来确定缓存值的位置,因此在具有多个缓存节点的生产环境中,delete_matched操作需要扫描所有节点以查找可能匹配的密钥。这违背了memcached的关键目标,即绩效。

有几个实现扩展dalli并承诺提供deleted_matched的实现。所有这些似乎都取决于程序员对性能的便利性,因此请谨慎使用。在使用这些宝石之前先看看这些宝石的来源是一个好的开始。

相关问题Is it possible to get/search Memcached keys by a prefix?

答案 1 :(得分:-2)

你应该看看Rails.cache.delete_matched:http://apidock.com/rails/ActiveSupport/Cache/Store/delete_matched

完全符合你的要求,理论上:

Rails.cache.delete_matched /^USERINFO/

相关问题