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

4.5 KiB
Raw Blame History

不使用Redis的配置说明

概述

本项目支持两种运行模式:

  1. 使用Redis模式 - 生产环境推荐,提供分布式缓存和更好的性能
  2. 不使用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配置

如果需要使用RedisUSE_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. 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

部署建议

开发/测试环境

USE_REDIS = False  # 推荐,简化环境配置

单机生产环境

USE_REDIS = False  # 可接受但建议使用Redis以提高性能

多实例/分布式生产环境

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 时才会被使用。