簡體   English   中英

更改數據時Django Cache(Redis)自動刷新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM