2016-01-11 79 views
1

我在python中有一個方法,它對發送的輸入做一些處理,並在處理完成後返回一個值。我可以使用python永久使用數據庫緩存來緩存數據Django

此方法花費大量時間來給出結果。所以,我現在正在做的是用於使用django數據庫緩存來緩存返回值的類似輸入。它運作良好。

但我需要將數據存儲在緩存數據庫中以供永久使用。

在Django網站上提到「Django緩存後端都不應該用於永久存儲」(https://docs.djangoproject.com/en/1.9/topics/cache/)。

我可以將數據存儲在緩存數據庫以及常規數據庫中。但這將是性能問題。

因此,我應該遵循什麼方法來解決性能問題。

回答

1

只要您沒有爲緩存條目設置超時值,就不應該在沒有明確這樣做的情況下清除它們。

要小心,在默認情況下,緩存有300秒計算的逾,你需要緩存的TIMEOUT參數的設置文件,例如明確設置爲None

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.db', 
     'TIMEOUT': None, 
    } 
} 

然而,似乎不好的做法,我使用數據庫高速緩存來存儲要永久保存的數據(例如,清除整個高速緩存只需調用一個方法 - cache.clear())。爲什麼不創建專門用於存儲結果的模型?

+0

如果我創建專用於存儲結果的模型,檢索的速度是否與從緩存中檢索速度幾乎相同? – Vinay

+0

這將是相同的,這兩種情況都是從數據庫中讀取的,事實上它是執行讀取的緩存框架並沒有使其更快。如果您使用的是不同的緩存後端(例如,memcached),那麼它會對性能產生影響。 – aumo

+0

非常感謝您的回答。 – Vinay