我正在运行Ruby on Rails并使用Dalli gem来访问memcached。
问题:如何删除一系列键(不是多个键,而是一个范围),例如:使用以“USERINFO”开头的键删除所有memcached条目,换句话说,如何使用通配符删除一系列钥匙?
答案 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/