使用 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)
我正在使用 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)