如果数据库中有与缓存数据相关的更改,有没有办法通知django刷新缓存?我找到了post,没有最新的答案,提到的django版本是1.6。我查看了缓存documentation并找不到与问题直接相关的任何内容。
我的问题是如果我缓存数据库查询的结果并且在缓存超时之间添加了新记录
from django.core.cache import cache
results = MyModel.objects.all() # 4 count
cache.set('results', results ) # Cached for 5 mins
# Mean while records have been added to MyModel table
results = MyModel.objects.all() # 6 count
cache.get('results') # 4 count and would not be updated for 5 mins
有没有办法在数据库中添加或删除记录时检查是否有任何数据库添加和缓存刷新?
我有近10张表,这可能很重要。无论何时更改记录,都必须更新缓存。
非常感谢任何帮助或建议。
项目筹码:
Django: 1.9
Python: 3.5
Redis: 2.8 (Cache Database)
Postgres: 9.5 (Main Database)
答案 0 :(得分:2)
所以在一年之后,这就是我想出来的
我们可以为app.py中的模型注册自定义post_save寄存器,用于您要更新缓存的每个应用,或者在项目初始化时为所有模型添加post_save监听器。
这两个帖子帮助提出了接收器功能,它将清除redis密钥的缓存。
在我的应用程序中,我使用" {} - {} - {}" .format(slug,model_name,username)作为我的redis密钥的密钥,每次模型都会删除此密钥该用户的数据已更改。
以下是我发现有用的两篇文章: Blog和Django Documentation