我使用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,它应该清除缓存并获取新数据。
发布于 2019-12-26 13:12:23
django-cacheops的官方文档指出,它监听模型信号并使“适当的查询”无效。但是,它不会使似乎不受更改影响的查询失效。在我看来,这是一个bug,因为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)
https://stackoverflow.com/questions/59488549
复制相似问题