我有一個Redis服務器,我在幾乎每個Django視圖上查詢以獲取一些緩存數據。我對一些stackoverflow問題做了一些閱讀,並瞭解到通過r = redis.StrictRedis(host='localhost', port=6379, db=0)
爲每個Web請求創建一個新的Redis連接是不好的,我應該使用連接池。Django&Redis:我如何正確使用連接池?
這裏是在Django我想出了辦法連接池:
在settings.py
這樣我就可以拉起來很容易在任何Django的觀點,因爲這就像一個全局變量:
# Redis Settings
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)
在一些views.py
:
from django.conf import settings
REDIS_CONN_POOL_1 = settings.REDIS_POOL_1
r = redis.Redis(connection_pool=REDIS_CONN_POOL_1)
r.get("foobar") # Whatever operation
所以,我的問題是:這是做連接池在Django的正確方法?有沒有更好的方法讓你們遇到類似的情況?這可能比我以前在每個請求中打開和關閉redis新連接的方式都要好。
編輯:收集了我的理解,爲什麼它是錯誤的打開一個新的連接對這個stackoverflow question的每個請求。
這似乎是一個DB一個很好的解決方案。任何想法如何指定多個DB或在通過'from django.core.cache import cache'執行操作時在DB之間切換?根據我收集的閱讀Django redis緩存文檔,我們只能指定一個數據庫。 – user1757703 2014-12-13 08:59:12
那麼數據庫的數量在redis中限制爲12個。使用密鑰前綴會更容易。你甚至可以編寫你自己的幫助器方法來達到他們,而不會弄亂很多。爲什麼你需要乘以數據庫? – martincpt 2014-12-13 11:31:45
我需要多個數據庫,因爲我根據數據類型將數據組織到多個數據庫中。 – user1757703 2014-12-13 17:55:56