我有一个使用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的新连接。
答案 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更糟糕。