【发布时间】:2017-01-09 19:08:09
【问题描述】:
如果对与缓存数据相关的数据库进行了任何更改,是否有任何方法通知 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)
【问题讨论】:
-
我遇到了类似的问题,但情况略有不同。在我的缓存中,我将某些 API 的结果缓存到其他应用程序。所以,想知道是否有办法通过再次调用 API 来刷新后台缓存,而不是在更新 API 调用时清除缓存并在获取时再次加载。
-
如果我理解问题正确github.com/Suor/django-cacheops 解决了这个问题。
标签: python django postgresql caching redis