4.5 KiB
4.5 KiB
不使用Redis的配置说明
概述
本项目支持两种运行模式:
- 使用Redis模式 - 生产环境推荐,提供分布式缓存和更好的性能
- 不使用Redis模式 - 开发/测试环境推荐,使用本地内存缓存,无需安装Redis
配置方式
不使用Redis配置
在 conf/env.py 文件中,将 USE_REDIS 设置为 False:
# ================================================= #
# ******** redis配置,无redis 可不进行配置 ******** #
# ================================================= #
# 是否使用Redis,设置为False则不使用Redis(使用本地内存缓存和数据库)
USE_REDIS = False # 设置为False
# 以下Redis配置仅在USE_REDIS=True时生效
REDIS_DB = 1
CELERY_BROKER_DB = 3
REDIS_PASSWORD = ''
REDIS_HOST = '127.0.0.1'
使用Redis配置
如果需要使用Redis,将 USE_REDIS 设置为 True:
USE_REDIS = True # 设置为True
# 配置Redis连接信息
REDIS_DB = 1
CELERY_BROKER_DB = 3
REDIS_PASSWORD = 'your_password' # Redis密码,无密码则留空
REDIS_HOST = '127.0.0.1' # Redis服务器地址
不同配置下的行为
1. 缓存系统
| 配置 | 缓存后端 | 说明 |
|---|---|---|
USE_REDIS = False |
django.core.cache.backends.locmem.LocMemCache |
本地内存缓存 |
USE_REDIS = True |
django_redis.cache.RedisCache |
Redis分布式缓存 |
注意:本地内存缓存在多进程部署环境下不共享,重启后数据会丢失。
2. Channels(WebSocket/SSE)
| 配置 | Channel Layer | 说明 |
|---|---|---|
USE_REDIS = False |
channels.layers.InMemoryChannelLayer |
内存通道层 |
USE_REDIS = True |
channels_redis.core.RedisChannelLayer |
Redis通道层 |
注意:内存通道层在多实例部署环境下不支持跨实例通信。
3. Celery异步任务
| 配置 | Broker | Result Backend | 说明 |
|---|---|---|---|
USE_REDIS = False |
amqp://guest@localhost// |
cache+memory:// |
需要RabbitMQ |
USE_REDIS = True |
redis://... |
redis://... |
Redis作为broker和backend |
注意:
- 不使用Redis时,Celery需要RabbitMQ作为broker
- 如果项目不使用Celery异步任务,可以忽略此配置
- 可以使用数据库作为broker(需要额外配置)
4. 系统配置和字典缓存
| 配置 | 存储方式 | 说明 |
|---|---|---|
USE_REDIS = False |
从数据库读取 | 每次查询数据库 |
USE_REDIS = True |
Redis缓存 | 首次查询后缓存到Redis |
部署建议
开发/测试环境
USE_REDIS = False # 推荐,简化环境配置
单机生产环境
USE_REDIS = False # 可接受,但建议使用Redis以提高性能
多实例/分布式生产环境
USE_REDIS = True # 必需,确保多实例间数据共享
性能对比
| 场景 | 不使用Redis | 使用Redis |
|---|---|---|
| 缓存查询速度 | 快(内存) | 快(内存+网络) |
| 多实例数据共享 | ❌ 不支持 | ✅ 支持 |
| 缓存持久化 | ❌ 不支持 | ✅ 支持(可配置) |
| 部署复杂度 | ✅ 简单 | ⚠️ 需要部署Redis |
| 成本 | ✅ 免费 | ⚠️ 需要服务器资源 |
切换配置
- 修改
conf/env.py中的USE_REDIS配置 - 重启Django服务
- 如果从Redis切换到非Redis,建议清理之前的Redis缓存
故障排查
问题:项目启动报错,提示Redis连接失败
解决方案:
- 检查
USE_REDIS是否正确设置为False - 确认
conf/env.py文件已保存
问题:多用户环境下缓存不同步
解决方案:
- 如果在多实例部署环境,必须使用Redis
- 将
USE_REDIS设置为True并配置Redis服务器
问题:Celery任务无法执行
解决方案:
- 检查是否安装了RabbitMQ或Redis
- 确认Celery worker是否正在运行
- 不使用异步任务时,可以忽略Celery相关配置
相关文件
conf/env.py- 环境配置文件conf/env.example.py- 环境配置示例文件application/settings.py- Django主配置文件application/dispatch.py- 缓存相关工具函数
依赖说明
不使用Redis时,以下依赖仍然需要安装(用于其他功能):
django-redis==5.4.0- Redis支持库(可选依赖)channels-redis==4.2.0- Channels Redis支持(可选依赖)redis- Redis客户端库(可选依赖)
这些依赖只在 USE_REDIS = True 时才会被使用。