我有一个Redis服务器,我在几乎每个Django视图上查询以获取一些缓存数据。我对一些stackoverflow问题做了一些阅读,并了解到通过r = redis.StrictRedis(host='localhost', port=6379, db=0)
为每个Web请求创建一个新的Redis连接是不好的,我应该使用连接池。Django&Redis:我如何正确使用连接池?
这里是在Django我想出了办法连接池:
在settings.py
这样我就可以拉起来很容易在任何Django的观点,因为这就像一个全局变量:
# Redis Settings
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)
在一些views.py
:
from django.conf import settings
REDIS_CONN_POOL_1 = settings.REDIS_POOL_1
r = redis.Redis(connection_pool=REDIS_CONN_POOL_1)
r.get("foobar") # Whatever operation
所以,我的问题是:这是做连接池在Django的正确方法?有没有更好的方法让你们遇到类似的情况?这可能比我以前在每个请求中打开和关闭redis新连接的方式都要好。
编辑:收集了我的理解,为什么它是错误的打开一个新的连接对这个stackoverflow question的每个请求。
这似乎是一个DB一个很好的解决方案。任何想法如何指定多个DB或在通过'from django.core.cache import cache'执行操作时在DB之间切换?根据我收集的阅读Django redis缓存文档,我们只能指定一个数据库。 – user1757703 2014-12-13 08:59:12
那么数据库的数量在redis中限制为12个。使用密钥前缀会更容易。你甚至可以编写你自己的帮助器方法来达到他们,而不会弄乱很多。为什么你需要乘以数据库? – martincpt 2014-12-13 11:31:45
我需要多个数据库,因为我根据数据类型将数据组织到多个数据库中。 – user1757703 2014-12-13 17:55:56