Django&Redis:我如何正确使用连接池?

use*_*703 23 python django redis

我有一个Redis服务器,我几乎在每个Django视图上查询以获取一些缓存数据.我已经对一些stackoverflow问题做了一些阅读,并了解到r = redis.StrictRedis(host='localhost', port=6379, db=0)为每个Web请求创建一个新的Redis连接是不好的,我应该使用连接池.

以下是我在Django中为连接池提出的方法:

settings.py这样我就可以在任何Django的观点很容易拉起来,因为这就像一个全局变量:

# Redis Settings
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)
Run Code Online (Sandbox Code Playgroud)

在一些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  
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:这是在Django中进行连接池的正确方法吗?对于那些经历过类似场景的人来说,有没有更好的方法?这可能比我在每次请求时打开和关闭与redis的新连接的旧方法更好.

编辑:收集我理解为什么在这个stackoverflow问题的每个请求上打开一个新连接是错误的.

mar*_*cpt 4

更好的方法是使用Django redis 缓存应用程序将 redis 设置为Django 的缓存后端。它为您的问题提供了完整的解决方案,并且每当您想要获取或设置缓存信息时,您都可以使用 Django 的官方缓存库来访问 redis。如果您决定将缓存后端更改为其他内容,还可以避免应用程序中的兼容性问题。

这是一个易于遵循的教程:

使用 Redis 作为 Django 的会话存储和缓存后端