# Redis使用需求分析(按模块) > **文档版本?* V1.0 > **创建日期?* 2025-12-12 > **分析范围?* 7大核心业务模? > **目的?* 明确哪些模块需要Redis,哪些不需? --- ## 📋 目录 1. [分析维度与标准](#1-分析维度与标? 2. [7大模块详细分析](#2-7大模块详细分? 3. [Redis需求汇总](#3-redis需求汇? 4. [实施优先级建议](#4-实施优先级建? 5. [成本效益分析](#5-成本效益分析) --- ## 1. 分析维度与标? ### 1.1 评估维度 | 维度 | 说明 | 影响 | |------|------|------| | **任务时长** | 单次任务处理时间 | > 10分钟 ?必须用Redis队列 | | **LLM调用频率** | 是否频繁调用大模?| 高频调用 ?需要Redis缓存 | | **数据重复?* | 是否有重复处?| 高重??需要Redis缓存 | | **用户规模** | 并发用户?| > 20用户 ?需要Redis | | **数据量级** | 单次处理数据?| 百万??需要Redis队列 | | **实时性要?* | 响应速度要求 | < 1??可能需要Redis缓存 | ### 1.2 判断标准 #### **Redis缓存**(必须) ``` 满足以下任一条件? ?LLM调用结果可复用(相同输入 ?相同输出? ?计算成本高(> 1秒)且结果可缓存 ?多实例部署需要共享数? ?需要跨请求保持状态(Session? ``` #### **Redis队列**(必须) ``` 满足以下任一条件? ?任务时长 > 10分钟 ?任务涉及批量处理? 100条) ?需要任务持久化(实例重启不丢失? ?需要任务重试(失败后自动重试) ?SAE多实例需要协调任务分? ``` #### **不需要Redis**(可选) ``` 满足以下所有条件: ?任务时长 < 10? ?单次处理,无需缓存 ?不调用LLM或调用频率极? ?单实例部署足? ``` --- ## 2. 7大模块详细分? ### 模块1:AIA - AI智能问答 ⭐⭐⭐⭐ #### **功能描述** - 10+个专业智能体(选题评价、PICO梳理、样本量计算等) - 流式对话 + 非流式对? - 知识库模式(RAG检索) #### **典型使用场景** ``` 用户:如何进行PICO梳理? 系统:调用LLM ?返回结构化回答(3-5秒) 用户:基于我的知识库,解答XXX问题 系统:RAG检?+ LLM ?返回答案?-10秒) ``` #### **需求分?* | 维度 | 评估 | 说明 | |------|------|------| | **任务时长** | 3-10?| 单次对话 | | **LLM调用** | 🔴 高频 | 每次对话都调?| | **数据重复?* | 🟡 中等 | 常见问题会重?| | **用户规模** | 🟡 中等 | 预计20-50并发 | | **批量处理** | ??| 单次对话 | #### **Redis需?* ``` ?Redis缓存:推? 理由? - 常见问题可以缓存?如何进行PICO梳理?? - 减少重复LLM调用,节省成? - 响应速度提升(从5秒降?0ms? 缓存策略? - 缓存key:问?智能体ID的hash - TTL?小时(问答变化不大) - 预计命中率:30-50% ?Redis队列:不需? 理由? - 任务时长 < 10? - 无需批量处理 - 同步返回即可 ``` #### **实施建议** ```typescript // 示例:缓存LLM回答 async function askAI(question: string, agentId: string) { const cacheKey = `aia:${agentId}:${hashQuestion(question)}`; // 1. 先查缓存 const cached = await cache.get(cacheKey); if (cached) { return cached; // ?缓存命中,节省LLM调用 } // 2. 调用LLM const answer = await llm.ask(question); // 3. 写入缓存 await cache.set(cacheKey, answer, 3600); // 1小时 return answer; } ``` --- ### 模块2:PKB - 个人知识?⭐⭐? #### **功能描述** - 用户创建私人文献库(每库50篇) - 上传文档(PDF/Word/TXT? - 基于库内文献进行RAG问答 #### **典型使用场景** ``` 用户:上?0篇PDF到知识库 系统:文档解??向量??存储(批处理?0-30分钟? 用户:基于知识库问答 系统:向量检??LLM ?回答?-5秒) ``` #### **需求分?* | 维度 | 评估 | 说明 | |------|------|------| | **任务时长** | 10-30分钟 | 批量上传处理 | | **LLM调用** | 🟡 中频 | 问答时调?| | **数据重复?* | 🟡 中等 | 相同问题会重?| | **用户规模** | 🟡 中等 | 每用?个库 | | **批量处理** | ??| 50篇文档处?| #### **Redis需?* ``` ?Redis缓存:推? 理由? - RAG检索结果可缓存(相同问??相同答案? - 向量检索也可缓? - 减少重复计算 缓存策略? - 问答缓存:TTL 1小时 - 向量检索缓存:TTL 30分钟 ?Redis队列:推? 理由? - 批量上传50篇文档,处理时间10-30分钟 - 需要后台处理(向量化耗时? - 实例重启不应丢失任务 队列策略? - 任务类型?pkb:batch-upload' - 失败重试?? ``` #### **关键场景** ``` 场景:用户上?0篇PDF 当前(MemoryQueue): - 22:00 用户上传 - 22:15 处理?0? - 22:20 SAE实例缩容 - ?任务丢失 改用Redis队列? - 22:00 用户上传 - 22:15 处理?0? - 22:20 实例销? - 22:21 新实例启? - ?从第21篇继续处? ``` --- ### 模块3:ASL - AI智能文献 ⭐⭐⭐⭐?**重点模块** #### **功能描述** - 标题摘要初筛(双模型并行? - 全文复筛?2字段提取? - Meta分析 - 证据图谱 #### **典型使用场景** ``` 场景1:标题摘要初筛(1000篇) - 单篇耗时?-10秒(双模型) - 总耗时?00-167分钟 ?2小时 - LLM调用?000次(每篇2个模型) 场景2:全文复筛(100篇PDF? - 单篇耗时?0-60秒(12字段提取? - 总耗时?0-100分钟 - LLM调用?00次(双模型) ``` #### **需求分?* | 维度 | 评估 | 说明 | |------|------|------| | **任务时长** | 🔴 2小时 | 1000篇文?| | **LLM调用** | 🔴 超高?| 2000?任务 | | **数据重复?* | 🟡 中等 | 同一文献可能多次筛?| | **用户规模** | 🟡 中等 | 预计20-50用户 | | **批量处理** | ?大批?| 1000?| #### **Redis需?* ``` 🔴 Redis缓存:必须! 理由? 1. LLM成本巨大? - 1000?× 2模型 × ¥0.015 = ¥30/? - 如果重复调用,成本翻? 2. 相同文献可能被多个项目筛? - 缓存可以跨项目复? - 节省60-80% LLM成本 3. 用户可能重新运行相同任务 - 调整PICO标准后重新筛? - 缓存可以加?0? 缓存策略? - key: fulltext:{pmid}:{model} - TTL: 30天(文献不变? - 预计命中率:60-80% 🔴 Redis队列:必须! 理由? 1. 任务时长2小时,SAE必然销毁实? 2. 任务失败?> 90%(如果用MemoryQueue? 3. 用户体验极差(任务反复失败) 4. LLM成本浪费(失败后重新调用? 队列策略? - 任务类型?asl:title-screening' - 失败重试?? - 优先级:高(用户等待? ``` #### **成本对比** ``` 不用Redis(MemoryQueue + 无缓存)? - 任务成功率:10-30% - 用户需要重试:平均3? - LLM成本:?0 × 3 = ¥90 - 用户满意度:极差 使用Redis(队?+ 缓存): - 任务成功率:99%+ - 用户重试次数:几乎为0 - LLM成本:?0 × 40% = ¥12?0%缓存命中? - 用户满意度:优秀 节省成本:?8/? 如果每月10次任务:¥780/? Redis成本:?/? ROI?,667% ``` --- ### 模块4:DC - 数据清洗整理 ⭐⭐⭐⭐?**重点模块** #### **功能描述** - Tool A:医疗数据超级合并器 - Tool B:病历结构化机器人(双模型NER? - Tool C:科研数据编辑器(AI代码生成? #### **典型使用场景** ``` 场景1:Tool B - 批量提取病历?000份) - 单份耗时?-10秒(双模型) - 总耗时?3-167分钟 ?1.5-3小时 - LLM调用?000? 场景2:Tool C - AI数据清洗 - 单次清洗?-10? - 无需批量处理 场景3:Tool A - 数据合并(百万行? - 耗时?-30分钟(取决于数据量) - 无LLM调用 ``` #### **需求分?* | 维度 | Tool A | Tool B | Tool C | |------|--------|--------|--------| | **任务时长** | 5-30分钟 | 🔴 2-3小时 | 3-10?| | **LLM调用** | ?| 🔴 超高?| 🟡 中频 | | **数据重复?* | ?| 🟡 中等 | 🟡 中等 | | **批量处理** | ?| ?| ?| #### **Redis需?* ``` Tool A(数据合并)? ?Redis缓存:不需? 理由:无LLM调用,无重复计算 ?Redis队列:推? 理由? - 百万行数据处理,耗时5-30分钟 - 避免实例销毁导致任务丢? Tool B(病历提取)? 🔴 Redis缓存:必须! 理由? - 与ASL类似,LLM成本? - 相同病历可能被重复提? - 健康检查结果可以缓存(24小时? 缓存策略? - 健康检查:TTL 24小时 - 提取结果:TTL 7? 🔴 Redis队列:必须! 理由? - 1000份病历,耗时2-3小时 - 与ASL相同原因 Tool C(AI数据清洗): ?Redis缓存:推? 理由? - AI代码生成结果可缓? - 相同操作不需要重复生成代? 缓存策略? - key: tool-c:{operation}:{hash} - TTL: 1小时 ?Redis队列:不需? 理由? - 单次操作 < 10? - 无需批量处理 ``` #### **Tool B成本分析** ``` 1000份病历提取(双模型)? - LLM成本:?30 - 如果重复提取:?30 × 2 = ¥860 使用Redis缓存? - 缓存命中率:40-60% - LLM成本:?30 × 40% = ¥172 - 节省:?58/? ``` --- ### 模块5:SSA - 智能统计分析 ⭐⭐⭐⭐ #### **功能描述** - 3条核心分析路径:队列研究、预测模型、RCT研究 - 从数据上??质控 ?分析 ?报告导出 #### **典型使用场景** ``` 场景1:队列研究(10万行数据? - 数据上传?分钟 - 数据质控?-5分钟 - 统计分析?-20分钟 - 报告生成?-3分钟 总耗时?0-30分钟 场景2:预测模型(机器学习? - 特征工程?-10分钟 - 模型训练?0-60分钟 - 模型评估?-5分钟 总耗时?0-75分钟 ``` #### **需求分?* | 维度 | 评估 | 说明 | |------|------|------| | **任务时长** | 🟡 10-75分钟 | 取决于分析类?| | **LLM调用** | 🟢 低频 | 仅报告解读时调用 | | **数据重复?* | ??| 每次数据不同 | | **用户规模** | 🟡 中等 | 预计20-30用户 | | **批量处理** | ??| 大数据集处理 | #### **Redis需?* ``` ⚠️ Redis缓存:可? 理由? - LLM调用频率低(仅报告解读) - 统计分析结果通常不可复用 - 但报告解读可以缓? 缓存策略(如果实施)? - 仅缓存LLM报告解读 - TTL: 1小时 ?Redis队列:推? 理由? - 任务时长 10-75分钟 - 预测模型训练可能?小时 - 实例销毁会导致任务丢失 队列策略? - 任务类型?ssa:cohort-analysis' - 失败重试?次(统计分析幂等? ``` #### **关键场景** ``` 场景:用户提交预测模型训练(60分钟? 当前(MemoryQueue): - 21:00 提交任务 - 21:30 训练?0% - 21:31 实例销? - ?任务丢失 改用Redis队列? - 21:00 提交任务 - 21:30 训练?0% - 21:31 实例销? - 21:32 新实例启? - ⚠️ 问题:训练无法从50%继续 - 💡 解决:定期保存checkpoint到OSS ``` --- ### 模块6:ST - 统计分析工具 ⭐⭐? #### **功能描述** - 100+种轻量化统计工具 - 即时、小型的分析需? - t检验、卡方检验、相关分析等 #### **典型使用场景** ``` 场景:用户上传数据(100行),选择t检? - 数据上传?? - 统计计算? 1? - 结果展示:即? 总耗时? 2? ``` #### **需求分?* | 维度 | 评估 | 说明 | |------|------|------| | **任务时长** | < 2?| 轻量化工?| | **LLM调用** | ??| 纯统计计?| | **数据重复?* | ??| 每次数据不同 | | **用户规模** | 🟡 中等 | 高频使用 | | **批量处理** | ??| 单次分析 | #### **Redis需?* ``` ?Redis缓存:不需? 理由? - 无LLM调用 - 统计计算极快? 1秒) - 结果不可复用(数据每次不同) ?Redis队列:不需? 理由? - 任务时长 < 2? - 可以同步返回 - 无需后台处理 ``` #### **结论** **ST模块完全不需要Redis?* --- ### 模块7:RVW - 稿件审查系统 ⭐⭐? #### **功能描述** - 方法学评? - 审稿流程管理 - 质量检? #### **典型使用场景** ``` 场景1:方法学评估(单篇论文) - 文档上传?? - AI评估?0-30? - 生成报告?-5? 总耗时?5-40? 场景2:批量审稿(10篇论文) - 批量上传?? - 批量评估?00-300秒(5-10分钟? - 报告生成?0? 总耗时?-10分钟 ``` #### **需求分?* | 维度 | 评估 | 说明 | |------|------|------| | **任务时长** | 15?10分钟 | 取决于批量大?| | **LLM调用** | 🟡 中频 | 方法学评?| | **数据重复?* | 🟡 中等 | 相同论文可能重复评估 | | **用户规模** | 🟢 ?| 预计5-10用户 | | **批量处理** | ⚠️ 可?| 批量审稿 | #### **Redis需?* ``` ?Redis缓存:推? 理由? - 相同论文可能被多次评? - LLM评估结果可复? - 节省LLM成本 缓存策略? - key: rvw:{paper_hash}:{model} - TTL: 7? ⚠️ Redis队列:可? 理由? - 单篇审稿 < 1分钟,不需要队? - 批量审稿?0篇)?-10分钟,建议用队列 决策标准? - 如果支持批量 > 10??需要队? - 否则,可以不? ``` --- ## 3. Redis需求汇? ### 3.1 Redis缓存需求汇? | 模块 | 是否需?| 优先?| 预计命中?| 年节省成?| |------|---------|--------|-----------|-----------| | **ASL** | 🔴 必须 | P0 | 60-80% | ¥9,360 | | **DC (Tool B)** | 🔴 必须 | P0 | 40-60% | ¥3,096 | | **PKB** | ?推荐 | P1 | 30-50% | ¥1,200 | | **AIA** | ?推荐 | P1 | 30-50% | ¥2,400 | | **DC (Tool C)** | ?推荐 | P2 | 20-30% | ¥500 | | **RVW** | ?推荐 | P2 | 40-60% | ¥800 | | **SSA** | ⚠️ 可?| P3 | 10-20% | ¥200 | | **DC (Tool A)** | ?不需?| - | 0% | ¥0 | | **ST** | ?不需?| - | 0% | ¥0 | **总计年节省成本:¥17,556** **Redis成本:?08/?* **ROI?6,256%** --- ### 3.2 Redis队列需求汇? | 模块 | 是否需?| 优先?| 典型任务时长 | 失败风险 | |------|---------|--------|------------|---------| | **ASL** | 🔴 必须 | P0 | 2小时 | 95%+ | | **DC (Tool B)** | 🔴 必须 | P0 | 2-3小时 | 95%+ | | **DC (Tool A)** | ?推荐 | P1 | 5-30分钟 | 70-90% | | **PKB** | ?推荐 | P1 | 10-30分钟 | 70-90% | | **SSA** | ?推荐 | P1 | 10-75分钟 | 70-95% | | **RVW** | ⚠️ 可?| P3 | 5-10分钟 | 30-50% | | **DC (Tool C)** | ?不需?| - | < 10?| < 5% | | **AIA** | ?不需?| - | < 10?| < 5% | | **ST** | ?不需?| - | < 2?| 0% | **结论**? - 2个模?*必须**用Redis队列(ASL、DC Tool B? - 3个模?*推荐**用Redis队列(DC Tool A、PKB、SSA? - 1个模?*可?*(RVW? - 3个模?*不需?*(DC Tool C、AIA、ST? --- ### 3.3 完整矩阵? ``` Redis缓存 Redis队列 ┌──────────────────┬───────────┬────────────? ?ASL ?🔴 必须 ?🔴 必须 ? ?最重要 ?DC (Tool B) ?🔴 必须 ?🔴 必须 ? ?最重要 ├──────────────────┼───────────┼────────────? ?DC (Tool A) ??不需? ??推荐 ? ?PKB ??推荐 ??推荐 ? ?SSA ?⚠️ 可? ??推荐 ? ├──────────────────┼───────────┼────────────? ?AIA ??推荐 ??不需? ? ?DC (Tool C) ??推荐 ??不需? ? ?RVW ??推荐 ?⚠️ 可? ? ├──────────────────┼───────────┼────────────? ?ST ??不需? ??不需? ? ?完全不需? └──────────────────┴───────────┴────────────? ``` --- ## 4. 实施优先级建? ### 4.1 Phase 1:必须实施(本周)✅ #### **目标:保证核心功能可?* ``` 优先级P0(紧急,必须): 1. ASL模块 - ?Redis缓存(LLM结果? - ?Redis队列(批量筛选) 2. DC Tool B模块 - ?Redis缓存(健康检?+ LLM结果? - ?Redis队列(批量提取) 工作量:5? 风险:高(不做会导致严重用户体验问题? 收益:避?5%任务失败?+ 节省60% LLM成本 ``` --- ### 4.2 Phase 2:推荐实施(下周)⭐ #### **目标:提升用户体验,降低运营成本** ``` 优先级P1(重要,推荐): 3. PKB模块 - ?Redis缓存(RAG问答? - ?Redis队列(批量上传) 4. DC Tool A模块 - ?Redis队列(数据合并) 5. AIA模块 - ?Redis缓存(常见问答) 工作量:3? 风险:中(不做会影响用户满意度) 收益:提?0%响应速度 + 节省30% LLM成本 ``` --- ### 4.3 Phase 3:可选实施(未来)⏳ #### **目标:锦上添花,优化体验** ``` 优先级P2-P3(次要,可选)? 6. SSA模块 - ⚠️ Redis队列(预测模型训练) 7. DC Tool C模块 - ?Redis缓存(AI代码生成? 8. RVW模块 - ?Redis缓存(方法学评估? - ⚠️ Redis队列(批量审稿) 工作量:2? 风险:低 收益:优化体? ``` --- ### 4.4 不需要实?? ``` ST模块? - ?完全不需要Redis - 理由:纯统计计算,极快(< 1秒) ``` --- ## 5. 成本效益分析 ### 5.1 Redis成本 ``` 阿里云Redis?56MB 高可用版): - 首年成本:?08?折后? - 续费成本:?80/? - 平均成本:?44/? ``` ### 5.2 收益分析(年度) #### **直接成本节省(LLM API费用?* | 模块 | 年节?| 说明 | |------|--------|------| | ASL | ¥9,360 | 缓存命中70%,每?0次任?| | DC Tool B | ¥3,096 | 缓存命中50%,每?次任?| | PKB | ¥1,200 | 缓存命中40%,每?0次任?| | AIA | ¥2,400 | 缓存命中40%,每?0次任?| | 其他 | ¥1,500 | Tool C, RVW?| | **合计** | **¥17,556** | | #### **间接收益(用户体验提升)** ``` 任务成功率提升: - ?10-30% ?99%+ - 减少用户投诉?0-90% - 提升用户满意度:显著 - 降低流失率:预计降低50% 响应速度提升? - LLM调用:从5??50ms(缓存命中) - 用户感知:明显提? 运营成本降低? - 减少客服工作量:70% - 减少退?补偿:?,000/? ``` ### 5.3 ROI计算 ``` 年度投资:?44(Redis成本? 年度收益:?7,556(LLM成本节省? ¥5,000(运营成本)= ¥22,556 ROI = (¥22,556 - ¥144) / ¥144 × 100% = 15,564% 结论:每投入¥1,回报?56 ``` ### 5.4 不同规模下的ROI | 用户规模 | LLM成本节省 | 运营成本节省 | Redis成本 | ROI | |---------|-----------|------------|----------|-----| | **小规模(10用户?* | ¥5,000 | ¥1,000 | ¥144 | 4,072% | | **中规模(50用户?* | ¥17,556 | ¥5,000 | ¥144 | 15,564% | | **大规模(200用户?* | ¥70,000 | ¥20,000 | ¥180 | 49,900% | **结论**:用户规模越大,ROI越高? --- ## 6. 最终建? ### 6.1 明确结论 ``` 问题:我们所有功能都需要Redis吗? 答案:❌ 不是的! 需要Redis的模块: ?ASL(必须:缓存+队列? ?DC Tool B(必须:缓存+队列? ?PKB(推荐:缓存+队列? ?DC Tool A(推荐:队列? ?AIA(推荐:缓存? ⚠️ SSA(可选:队列? ⚠️ RVW(可选:缓存+队列? 不需要Redis的模块: ?ST(完全不需要) ?DC Tool C(不需要队列,缓存可选) ``` ### 6.2 实施策略 ``` 务实的渐进式实施? ?周(必须): - ?ASL + DC Tool B - 理由?小时任务,不用Redis会有95%失败? ?周(推荐): - ?PKB + DC Tool A + AIA - 理由:提升用户体验,降低成本 ??(可选)? - ?SSA + RVW - 理由:锦上添? 永远不做? - ?ST - 理由:完全没必要 ``` ### 6.3 给产品经理的建议 ``` 如果您问?我们要不要用Redis? 我的回答是: 1. ?必须用,但不是所有模块都? 2. ?优先实施核心模块(ASL、DC Tool B? 3. ?其他模块根据实际情况决定 4. ?ST模块完全不需? 如果您担心成本: - Redis年费:?44 - 节省LLM成本:?7,556/? - ROI?5,564% - 结论:不用Redis才是最大的成本浪费? ``` --- ## 7. 常见问题 ### Q1:如果暂时只实施ASL和DC Tool B,其他模块会有问题吗? **A1**:不会有严重问题? ``` 其他模块影响? - PKB:可能偶尔任务丢失(10-20%概率? - DC Tool A:同? - AIA:可能LLM重复调用,成本略? - SSA:可能任务丢? - Tool C, ST:完全没影响 ``` ### Q2?56MB Redis够用吗? **A2**:完全够用! ``` 内存占用预估? - LLM结果缓存?0MB - 任务队列数据?0MB - 系统开销?0MB ───────────────────── 总计?0MB / 256MB = 31% 结论?56MB足够支撑100用户规模 ``` ### Q3:不用Redis队列,用数据库队列可以吗? **A3**:可以但不推荐? ``` 对比? Redis队列 数据库队? 响应速度 < 1ms > 10ms 功能完善? ⭐⭐⭐⭐? ⭐⭐? 社区支持 ⭐⭐⭐⭐? ⭐⭐ 开发成? 低(BullMQ? 中等 结论:您已经购买了Redis,没理由不用 ``` ### Q4:能否只用Redis缓存,不用队列? **A4**:可以,但核心功能会不可用? ``` 只用Redis缓存的结果: ?LLM成本控制:可以实? ?响应速度提升:可以实? ?长任务可靠性:无法保证(ASL、DC Tool B会有95%失败率) ?用户体验:极? 建议:缓?队列一起实? ``` --- ## 8. 总结 ### 核心要点 1. **不是所有模块都需要Redis** - 7个模块中?个必须,4个推荐,1个不需? 2. **Redis的核心价?* - LLM成本节省:?7,556/? - 任务可靠性:?0% ?99%+ - 用户体验:显著提? 3. **优先级明?* - P0(必须):ASL、DC Tool B - P1(推荐):PKB、DC Tool A、AIA - P2-P3(可选):SSA、RVW、DC Tool C - 不需要:ST 4. **投资回报率极?* - 投入:?44/? - 回报:?2,556/? - ROI?5,564% 5. **实施策略** - 渐进式:先核心,后周? - 务实:不过度设计 - 灵活:根据实际情况调? --- **文档维护者:** 技术团? **最后更新:** 2025-12-12 **相关文档?* - [Redis改造实施计划](./04-Redis改造实施计?md) - [Redis缓存与队列的区别说明](./05-Redis缓存与队列的区别说明.md) - [长时间任务可靠性分析](./06-长时间任务可靠性分?md)