Files
whale-town-end/src/core/redis
moyin bb796a2469 refactor:项目架构重构和命名规范化
- 统一文件命名为snake_case格式(kebab-case  snake_case)
- 重构zulip模块为zulip_core,明确Core层职责
- 重构user-mgmt模块为user_mgmt,统一命名规范
- 调整模块依赖关系,优化架构分层
- 删除过时的文件和目录结构
- 更新相关文档和配置文件

本次重构涉及大量文件重命名和模块重组,
旨在建立更清晰的项目架构和统一的命名规范。
2026-01-08 00:14:14 +08:00
..

Redis Redis缓存服务模块

Redis 是应用的核心缓存服务模块提供完整的Redis操作功能支持开发环境的文件存储模拟和生产环境的真实Redis服务器连接具备统一的接口规范、自动环境切换、完整的过期机制和错误处理能力。

基础键值操作

set()

设置键值对,支持可选的过期时间参数。

get()

获取键对应的值不存在或已过期时返回null。

del()

删除指定的键,返回删除操作是否成功。

exists()

检查键是否存在且未过期。

过期时间管理

setex()

设置键值对并同时指定过期时间。

expire()

为现有键设置过期时间。

ttl()

获取键的剩余过期时间,支持状态码返回。

数值操作

incr()

键值自增操作,返回自增后的新值。

集合操作

sadd()

向集合添加成员。

srem()

从集合移除成员。

smembers()

获取集合的所有成员列表。

系统操作

flushall()

清空所有数据。

使用的项目内部依赖

Injectable (来自 @nestjs/common)

NestJS依赖注入装饰器用于标记服务类可被注入。

Logger (来自 @nestjs/common)

NestJS日志服务用于记录操作日志和错误信息。

OnModuleDestroy (来自 @nestjs/common)

NestJS生命周期接口用于模块销毁时的资源清理。

ConfigService (来自 @nestjs/config)

NestJS配置服务用于读取环境变量和应用配置。

ConfigModule (来自 @nestjs/config)

NestJS配置模块提供配置服务的依赖注入支持。

Redis (来自 ioredis)

Redis客户端库提供与Redis服务器的连接和操作功能。

fs.promises (来自 Node.js)

Node.js异步文件系统API用于文件模式的数据持久化。

path (来自 Node.js)

Node.js路径处理工具用于构建文件存储路径。

IRedisService (本模块)

Redis服务接口定义规范所有Redis操作方法的签名和行为。

FileRedisService (本模块)

文件系统模拟Redis服务的实现类适用于开发测试环境。

RealRedisService (本模块)

真实Redis服务器连接的实现类适用于生产环境。

核心特性

双模式支持

  • 开发模式使用FileRedisService进行文件存储模拟无需外部Redis服务器
  • 生产模式使用RealRedisService连接真实Redis服务器提供高性能缓存
  • 自动切换根据NODE_ENV和USE_FILE_REDIS环境变量自动选择合适的实现

完整的Redis功能

  • 基础操作支持set、get、del、exists等核心键值操作
  • 过期机制完整的TTL支持包括设置、查询和自动清理功能
  • 集合操作支持sadd、srem、smembers等集合管理功能
  • 数值操作支持incr自增操作适用于计数器场景

数据持久化保障

  • 文件模式使用JSON文件持久化数据支持应用重启后数据恢复
  • 真实模式依托Redis服务器的RDB和AOF持久化机制
  • 过期清理:文件模式提供定时过期键清理机制,每分钟自动清理

错误处理和监控

  • 连接监控Redis连接状态监控支持连接、错误、关闭事件处理
  • 异常处理:完整的错误捕获和日志记录,确保服务稳定性
  • 操作日志:详细的操作日志记录,便于调试和性能监控
  • 自动重连Redis连接异常时支持自动重连机制

潜在风险

文件模式性能限制

  • 文件模式在高并发场景下性能有限每次操作都需要文件I/O
  • 不适用于生产环境的高性能需求
  • 建议仅在开发测试环境使用生产环境切换到真实Redis模式

数据一致性风险

  • 文件模式的过期清理是定时执行(每分钟一次),可能存在短暂的过期数据访问
  • 应用异常退出时可能导致内存数据与文件数据不一致
  • 建议在生产环境使用真实Redis服务依托其原子操作保证一致性

环境配置依赖

  • 真实Redis模式依赖外部Redis服务器的可用性和网络连接稳定性
  • Redis服务器故障或网络异常可能导致缓存服务不可用
  • 建议配置Redis集群、主从复制和监控告警机制

内存使用风险

  • 文件模式将所有数据加载到内存Map中大量数据可能导致内存溢出
  • 缺少内存使用限制和LRU淘汰机制
  • 建议控制缓存数据量或在生产环境使用真实Redis的内存管理功能

版本信息

  • 模块版本1.0.3
  • 创建日期2025-01-07
  • 最后修改2026-01-07
  • 作者moyin