python - Django & Redis : How do I properly use connection pooling?

标签 python django redis

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

这是我为 Django 中的连接池提出的方法:

settings.py 中,我可以在任何 Django View 中轻松将其拉起,因为这就像一个全局变量:

# 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 的每个请求上打开新连接是错误的理解.

最佳答案

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

这里有一个简单易懂的教程:

Using Redis as Django's session store and cache backend

关于python - Django & Redis : How do I properly use connection pooling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412135/

相关文章:

python - 在 Pandas 中读取没有标题的制表符分隔数据

python - 无法将 django 更新到最新版本

node.js - 如何在 worker 之间共享动态对象?

javascript - Express Session 未使用 Expression session 存储在 redis 中 - connect redis

python - 如何从多个项目的缓冲区中生成单个项目并定期重新填充缓冲区?

python - 将 qcut 应用于滚动分析

django - 只获取十进制 django-money

javascript - 为什么我无法从 Node JS 的 http 服务器获得前几个响应?

python - 使用拖放时如何拖动图标

python - Django开发IDE