4

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

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

4

2 回答 2

0

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

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

有几种实现可以扩展dalli并承诺提供deleted_matched. 这些似乎都在权衡程序员的便利性而不是性能,因此请谨慎使用它们。在使用它们之前查看这些宝石的来源是一个好的开始。


相关问题是否可以通过前缀获取/搜索 Memcached 键?

于 2017-01-18T05:39:18.497 回答
-3

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

从理论上讲,完全符合您的要求:

Rails.cache.delete_matched /^USERINFO/

于 2012-07-09T09:21:00.660 回答