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

时间:2015-03-10 10:14:29

标签: python caching flask memcached flask-cache

我正在尝试删除缓存存储中包含(在这种情况下以)开头的缓存键的子字符串的所有条目,但我没有看到任何简单的方法。我正在使用Memcache作为后端。

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

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

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

这样的东西

1 个答案:

答案 0 :(得分:1)

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

理想情况下,知道密钥可能具有的后缀。 如果没有,您可以自己在用户的特殊键中维护索引。 与user_id + '_keys'类似,其中包含列表键。 这样,您可以按键循环键并删除用户的所有缓存。

您可以覆盖.set功能来管理此新密钥。