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

Correct way to manage redis connections in django

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

目前我这样做:

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

from redis import Redis
REDIS_CONNECTION = Redis()

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

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

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

来自官方包文档:

Behind the scenes, redis-py uses a connection pool to manage connections to a Redis server. By default, each Redis instance you create will in turn create its own connection pool. You can override this behavior and use an existing connection pool by passing an already created connection pool instance to the connection_pool argument of the Redis class. You may choose to do this in order to implement client side sharding or have finer grain control of how connections are managed.

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

如果你想使用一个集中式池,在一个集中的地方实例化一个,每次你创建一个新实例时传递给它那个新实例:

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

以我的谦虚观点(不是专家),我会继续使用您一直使用的默认方式,并在遇到性能问题时回退到此方法

在我看来,急于优化可能比不优化更糟糕。