2013-03-13 84 views
7

處理Redis連接(通過Python-RQ直接或間接與Redis進行交互)的最佳模式是什麼?如何正確處理使用Python/Python RQ的Redis連接?

通常,數據庫連接完成後需要關閉/返回池,但我不明白如何使用redis-py來完成此操作。這讓我懷疑我是否以錯誤的方式行事。

此外,我看到一些性能下降時,排隊工作RQ,我已經被告知可能涉及到糟糕的連接使用/重用。

基本上,我有興趣知道正確的模式,所以我可以驗證或更正我們在應用程序中的內容。

非常感謝!如果有更多有用的信息,請告訴我。

回答

4

在幕後,redis-py使用連接池來管理與Redis服務器的連接。默認情況下,您創建的每個Redis實例將依次創建自己的連接池。您可以通過將已創建的連接池實例傳遞給Redis類的connection_pool參數來覆蓋此行爲並使用現有連接池。您可以選擇這樣做,以實現客戶端分片或更好地控制連接的管理方式

pool = redis.ConnectionPool(host='localhost', port=6379, db=0) 
r = redis.Redis(connection_pool=pool) 
+0

太棒了!但是,我仍然不清楚連接池返回的連接是否應該在任何時候關閉,或者是否自動處理。任何想法? – 2013-03-15 17:21:19

+0

我沒有做任何關閉連接,也沒有閱讀過關於它的信息,但是我沒有看到任何性能問題。也許有一種處理連接的適當方式 – mmenafra 2013-04-20 19:02:03