我正在尝试删除缓存存储中包含(在这种情况下以)开头的缓存键的子字符串的所有条目,但我没有看到任何简单的方法。我正在使用Memcache作为后端。
如果我正确理解了代码,我需要在调用delete
或delete_many
时传递完整的缓存密钥。还有其他方法吗?
如果有更好的方法,我会解释我正在尝试做的事情:我需要在修改设置时清除某些用户的缓存。使用clear()
清除缓存将删除所有用户的缓存条目,这些条目大约为110K,因此我不想使用它。
我正在使用用户的ID,请求的路径和其他变量生成key_prefix
。缓存键始终以经过身份验证的用户的ID开头。理想情况下,我会使用像delete_many(user_id + ".*")
答案 0 :(得分:1)
它不受支持,因为Memcache被设计为分布式哈希。没有存储要搜索的密钥索引。
理想情况下,应知道密钥可能具有的后缀。
如果没有,您可以自己在用户的特殊键中维护索引。
与user_id + '_keys'
类似,其中包含列表键。
这样,您可以按键循环键并删除用户的所有缓存。
您可以覆盖.set
功能来管理此新密钥。