在django中管理redis连接的正确方法

时间:2015-02-04 15:45:01

标签: python django database redis database-connection

我有一个使用redis的django项目(redis中只有一个db)。

目前我这样做:

在我的settings.py文件中,我有:

from redis import Redis
REDIS_CONNECTION = Redis()

我想在任何时候调用此连接(在项目中不同应用程序中的许多views.py文件中)我这样做:

from django.conf import settings
settings.REDIS_CONNECTION.lpush("testlist", "hello")

这种方法有问题吗?如果没有必要,我不想继续创建与redis的新连接。

1 个答案:

答案 0 :(得分:5)

从官方包文档:

  

在幕后,redis-py使用连接池来管理与Redis服务器的连接。默认情况下,您创建的每个Redis实例将依次创建自己的连接池。您可以通过将已创建的连接池实例传递给Redis类的connection_pool参数来覆盖此行为并使用现有连接池。您可以选择执行此操作以实现客户端分片,或者对如何管理连接进行更精细的控制。

(见https://pypi.python.org/pypi/redis/

如果要使用集中式池,请在集中式位置实例化,并在每次创建新实例时将其传递给新实例:

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

在我的谦虚意见(不是专家)中,当我遇到性能问题时,我会继续使用您一直在使用的默认方式并回退到这种方法

急切优化可能比没有优化IMO更糟糕。