[英]Django Cache (Redis) auto refresh when data is changed
如果數據庫中與緩存數據相關的任何更改,是否有任何方法可以通知django刷新緩存? 我發現了這篇文章 ,沒有最新答案,提到的Django版本是1.6。 我查看了緩存文檔 ,但沒有發現與該問題直接相關的任何內容。
我的問題是,如果我緩存數據庫查詢的結果並且在緩存超時之間添加了新記錄,該怎么辦?
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)
所以一年之后,這就是我想出的
我們可以在要初始化緩存的每個應用程序中向每個應用程序的app.py中的模型注冊自定義post_save寄存器,或者在項目初始化時為所有模型添加post_save偵聽器。
這兩篇文章都幫助提出了接收者功能,該功能將清除redis密鑰的緩存。
在我的應用程序中,我使用“ {}-{}-{}”。format(插件,model_name,用戶名)作為我的redis密鑰的鍵,並且每次更改該用戶的模型數據時,我都會刪除該密鑰。
這是我發現有幫助的帖子: 博客
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.