Django+Docker使用Redis缓存报错:找不到redis缓存后端模块
问题描述
使用Docker部署Redis作为Django缓存时,遇到以下错误:
django.core.cache.backends.base.InvalidCacheBackendError: Could not find backend 'django.core.cache.backends.redis.RedisCache': No module named 'django.core.cache.backends.redis'
当前缓存配置:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.redis.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379', } }
Redis启动命令:
docker run --name some-redis -d redis
解决方案
1. 匹配Django版本安装对应依赖
Django 4.2及以上版本:
官方内置的RedisCache后端依赖redis-py库,执行以下命令安装:pip install redisDjango 4.2以下版本:
内置无Redis缓存后端,需使用第三方库django-redis:- 安装依赖:
pip install django-redis - 修改缓存配置的
BACKEND字段:CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://some-redis:6379', } }
- 安装依赖:
2. 修正Docker环境下的Redis访问地址
Docker容器内的127.0.0.1指向容器自身,而非宿主机,需调整LOCATION的主机地址:
- 确保Redis与Django容器处于同一Docker网络,直接用Redis容器名作为主机名(示例:
redis://some-redis:6379) - 配置同一网络的步骤:
- 创建自定义网络:
docker network create django-redis-net - 重新启动Redis容器并加入该网络:
docker run --name some-redis --network django-redis-net -d redis - 启动Django容器时同样加入该网络:
docker run --name your-django-container --network django-redis-net -d your-django-image
- 创建自定义网络:
3. 验证缓存连接
进入Django Shell测试连接是否正常:
# 启动Django Shell python manage.py shell # 测试缓存读写 from django.core.cache import cache cache.set('test_key', 'test_value', 60) print(cache.get('test_key'))
若输出test_value,则缓存配置生效。
内容的提问来源于stack exchange,提问作者Yuliyan Petrov
相关产品推荐
相关产品推荐

