使用 django-cacheops 从 Redis 中删除缓存的查询

Removing cached Query from Redis using django-cacheops

我正在使用 django-cacheops 来缓存查询。现在我想用一些不同的 API 调用在同一个实例中更新一些,我想从 Redis 中删除这个缓存的查询。 这是API-1

users = User.objects.cache().get(user_id = user_id)

现在我正在用 API-2

更新我的用户
user = request.user
if user.is_sms_read:
    user.is_sms_read = False
else:
    user.is_sms_read = True
user.save()

现在我正在使用相同的 API-1 获取数据 它给我数据缓存数据
我想如果我调用 API-2 它应该清除缓存并获取新数据。

django-cacheops 的官方文档指出它监听模型信号并使 "appropriate queries" 无效。但它不会使似乎不受更改影响的查询无效。对我来说这看起来像是一个错误,因为 API-1 的查询集应该受到 API-2 中更改的影响。但与此同时,您也可以尝试使用

强制使缓存无效
from cacheops import invalidate_obj

user = request.user
if user.is_sms_read:
    user.is_sms_read = False
else:
    user.is_sms_read = True
user.save()

invalidate_obj(user)