2013-03-13 82 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