Python 获取或删除Flask中以子字符串开头(或包含子字符串)的键的缓存项

Python 获取或删除Flask中以子字符串开头(或包含子字符串)的键的缓存项,python,caching,flask,memcached,flask-cache,Python,Caching,Flask,Memcached,Flask Cache,我试图删除缓存存储中包含(在本例中以)缓存键子字符串的所有条目,但我看不到任何简单的方法。我使用Memcache作为后端 如果我正确理解了代码,我需要在调用delete或delete\u many时传递完整缓存键。还有别的方法吗 如果有更好的方法,我将解释我试图做什么:当某些用户修改他们的设置时,我需要为他们清除缓存。使用clear()清除缓存将删除所有用户的缓存项,大约110K,因此我不想使用它 我正在生成带有用户ID、请求路径和其他变量的key\u前缀。缓存密钥始终以经过身份验证的用户的ID

我试图删除缓存存储中包含(在本例中以)缓存键子字符串的所有条目,但我看不到任何简单的方法。我使用Memcache作为后端

如果我正确理解了代码,我需要在调用
delete
delete\u many
时传递完整缓存键。还有别的方法吗

如果有更好的方法,我将解释我试图做什么:当某些用户修改他们的设置时,我需要为他们清除缓存。使用
clear()
清除缓存将删除所有用户的缓存项,大约110K,因此我不想使用它


我正在生成带有用户ID、请求路径和其他变量的
key\u前缀
。缓存密钥始终以经过身份验证的用户的ID开头。因此,理想情况下,我会使用类似于
delete\u many(user\u id+“*”)

的东西,因为Memcache被设计为分布式散列。没有存储要搜索的键的索引

理想情况下,您应该知道一个键可能有什么后缀。 如果没有,您可以在用户的特殊键中自己维护索引。 类似于
user\u id+“\u keys”
,它包含一个键列表。 通过这种方式,您可以逐键循环并删除用户的所有缓存


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

我得出了相同的结论,事实上我已经在研究一个与您在这里提出的非常类似的实现。密钥的唯一“未知”变量是请求的路径,因此我的想法是循环遍历所有允许GET的url,并删除所有具有user_id+url+的密钥。虽然不理想,但这对我的情况应该有效。