django-vue3-admin-backend/不使用Redis配置说明.md
2025-11-02 13:00:04 +08:00

151 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 不使用Redis的配置说明
## 概述
本项目支持两种运行模式:
1. **使用Redis模式** - 生产环境推荐,提供分布式缓存和更好的性能
2. **不使用Redis模式** - 开发/测试环境推荐使用本地内存缓存无需安装Redis
## 配置方式
### 不使用Redis配置
`conf/env.py` 文件中,将 `USE_REDIS` 设置为 `False`
```python
# ================================================= #
# ******** 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`
```python
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. ChannelsWebSocket/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 |
## 部署建议
### 开发/测试环境
```python
USE_REDIS = False # 推荐,简化环境配置
```
### 单机生产环境
```python
USE_REDIS = False # 可接受但建议使用Redis以提高性能
```
### 多实例/分布式生产环境
```python
USE_REDIS = True # 必需,确保多实例间数据共享
```
## 性能对比
| 场景 | 不使用Redis | 使用Redis |
|------|-----------|----------|
| 缓存查询速度 | 快(内存) | 快(内存+网络) |
| 多实例数据共享 | ❌ 不支持 | ✅ 支持 |
| 缓存持久化 | ❌ 不支持 | ✅ 支持(可配置) |
| 部署复杂度 | ✅ 简单 | ⚠️ 需要部署Redis |
| 成本 | ✅ 免费 | ⚠️ 需要服务器资源 |
## 切换配置
1. 修改 `conf/env.py` 中的 `USE_REDIS` 配置
2. 重启Django服务
3. 如果从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` 时才会被使用。