使用以(或包含)子字符串开头的键获取或删除 Flask 中的缓存条目

Getting or deleting cache entries in Flask with the key starting with (or containing) a substring

我正在尝试删除缓存存储中包含(在本例中为开头)缓存键子字符串的所有条目,但我没有看到任何简单的方法来执行此操作。我正在使用 Memcache 作为后端。

如果我对代码的理解正确,我需要在调用deletedelete_many时传递完整的缓存键。还有其他方法吗?

如果有更好的方法,我将解释我正在尝试做的事情:我需要在某些用户修改其设置时清除缓存。使用 clear() 清除缓存将删除所有用户的缓存条目,大约 110K,所以我不想使用它。

我正在使用用户 ID、请求路径和其他变量生成 key_prefix。缓存键始终以经过身份验证的用户的 ID 开头。所以理想情况下我会使用类似 delete_many(user_id + ".*")

它不受支持,因为 Memcache 被设计为分布式哈希。没有存储用于搜索的键索引。

理想情况下,您应该知道密钥可能具有的后缀。 如果没有,您可以自己在用户的特殊键中维护一个索引。 像 user_id + '_keys',它包含一个 list 键。 这样就可以按键循环,删除用户的所有缓存。

您可以覆盖 .set 函数来管理这个新密钥。