用于网络波动、主备切换和写命令超时,明确结果未知、可重试边界及重复执行后果。
## 任务目标 请审查 Redis 客户端的超时重试策略,并设计符合业务语义的幂等处理。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 重试业务:从当前问题或代码中识别使用 Redis 重试的业务操作;留空时优先检查递增、入队或带过期语义的写入,选一条有客户端和业务双层重试的完整链路。 代码与故障资料:读取 Redis 客户端依赖、连接与命令超时、业务重试封装、请求总时限和已有异常样本,版本与方法语义从实际工程确定。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 追踪客户端、Service、网关与任务层的重试入口及次数。 - 识别命令执行、响应接收和业务确认的边界,找结果未知的处理代码。 - 核对业务请求标识、判重记录、保留期、结果查询及并发覆盖条件。 - 读取现有故障测试和每层超时配置,计算最坏请求次数及总耗时。 ### 可采用的默认处理 - 默认只读形成命令重试决策,不直接调整重试次数或扰动 Redis 连接。 - 无法判断是否执行的写操作归为结果未知,不按连接异常一律重发。 - 缺负载数据时按已知总时限列预算公式与停止条件,不指定所谓通用最优退避值。 ### 必须有依据的事项 - 重复执行对计数、队列、费用或过期时间的业务后果不明时,不认定该写操作可以安全重试。 - 业务请求唯一性、判重有效期或超时后的合法恢复动作缺少依据时,不承诺端到端幂等。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无代码时交付按命令语义分类的重试决策样例,以及多层放大和时间预算的计算模板。 - 无故障环境时提供发送前断开、执行后丢响应和并发旧值覆盖的隔离桩测试方案。 ## 执行要求 适用范围:Redis客户端重连与业务重试;先确认客户端及版本,连接重试和命令重试分开处理。厂商示例参数不能当作本项目推荐值。 将命令已执行但响应超时纳入分析,审查重试的幂等性,并防止多层重试放大请求。 检查步骤: 1. 列出哪些异常发生在连接、发送、执行或接收阶段,按现有证据区分确定未执行、确定执行和结果未知;网络超时本身不能证明写操作没有成功。 2. 逐条按业务结果审查命令重复执行的影响,特别检查递增、入队、计费和带过期语义的写入;即使命令形式相同,也要评估并发新值被旧请求覆盖的风险。 3. 追踪客户端、业务方法、接口网关和任务调度层是否各自重试,计算最坏请求次数与总耗时;为每个操作指定唯一的重试责任层。 4. 为可重试操作定义总期限、次数、退避及随机扰动,结合剩余预算和业务重要性决定何时停止;参数待压测时给出推导方式,不编造固定最优数值。 5. 对非幂等或结果未知的操作,设计业务请求标识、状态查询或对账路径,说明判重记录的生命周期与故障边界;不得仅套一把锁就宣称端到端恰好执行一次。 6. 仅在隔离测试环境或已明确授权的生产演练中验证发送前断开、执行后丢响应、主备切换及连续失败;优先使用代理或桩模拟故障,不扰动普通生产连接,记录业务动作次数、最终状态、请求耗时和重试放大量;验证恢复后积压不会再次冲击系统。 ## 交付与验收 输出要求:交付命令重试决策表、重试责任与预算、最小代码或配置、结果未知处理流程及故障用例。决策表写明“可重试条件|重复后果|停止条件|人工或自动对账入口”。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每类操作明确可重试条件、重复后果、责任层、总预算和停止条件。 - 结果未知有业务标识与查询或核对路径,不能仅以锁或重连成功证明幂等。 - 测试核对业务动作次数、最终状态和重试放大量;未执行的故障注入不写已验证。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里云《Tair:客户端重试指南》](https://help.aliyun.com/zh/redis/use-cases/retry-mechanisms-for-redis-clients) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
排查 Jedis 借用等待、连接池耗尽和连接增长,结合应用规模、命令耗时及实际版本评估参数。
## 任务目标 请排查 Redis Jedis 连接池容量和资源泄漏问题。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 连接池问题:从当前报错定位 Jedis 池或借还连接方法;没有指定时优先扫描直接借用 Jedis 的业务路径和共用连接池,检查异常与提前返回能否归还。 工程与连接记录:从依赖树、连接池配置、借还代码和已有池指标、异常记录获取资料,自动核对 Jedis 与 Commons Pool 的真实版本及参数单位。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 查找 getResource、close、try-with-resources、提前返回及跨线程持有 Jedis 的路径。 - 读取 maxTotal、等待和空闲检测等实际参数定义及版本默认值。 - 汇总应用实例、业务池和分片数量,关联服务端连接限制与已有活跃、空闲、等待指标。 - 区分借用等待、建立连接和命令执行超时,查看慢命令或长任务占用证据。 ### 可采用的默认处理 - 默认只读检查资源生命周期,不扩大连接池、不重启应用或更换依赖。 - 缺 QPS 或耗时数据时先交付连接预算公式和需要观测的占用时间,容量值标待测。 - 按工程版本解读 API 与时间单位,不照搬 Jedis 2.9.0 示例参数或默认值。 ### 必须有依据的事项 - 目标业务的请求完成期限或允许等待时间无法确定时,不擅自改变借用超时与失败行为。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时提供正常、异常、提前返回与批处理的资源生命周期审查样例及版本核对入口。 - 无池指标时交付连接总预算表和最小观测方案,区分泄漏、慢占用与容量不足的证据。 ## 执行要求 适用范围:Jedis连接池及Commons Pool管理的客户端;官方页面示例基于Jedis2.9.0,必须核对实际版本API和默认值,不将该示例作为依赖升级建议。 结合应用规模、命令耗时和服务端限制评估池大小,核对借用资源是否归还;池耗尽不一定需要扩容。 检查步骤: 1. 准确区分连接建立失败、借用等待超时、连接已耗尽与命令执行超时,按首次出现时间关联应用发布、流量和数据库资源,避免把所有异常都解释为池太小。 2. 逐一核对正常、异常、提前返回和批处理路径中的资源归还,检查是否把Jedis实例跨线程共享或在长任务中持有;提出能定位泄漏的最小观测方式。 3. 统计每个应用实例、业务池与分片的连接总量,包含扩容、滚动发布时并存的实例,计算与服务端连接限制的关系,并保留必要余量。 4. 根据实际命令耗时与到达率估算所需并发连接,核对等待上限、空闲连接及检测配置;参数名称和时间单位必须匹配版本,不直接复制旧文档默认值。 5. 检查慢命令、网络、DNS和下游阻塞是否延长占用,分别说明调整池容量与消除根因的效果;需要预热时评估启动期间的集中建连压力。 6. 在代表性流量下验证借用等待、活跃连接、空闲连接、错误和服务端负载,覆盖突发、节点故障与恢复;记录每次配置变更和可撤回的旧值。 ## 交付与验收 输出要求:输出异常分类、资源生命周期、连接预算、参数建议及验证结果。参数表使用“当前值|版本依据|建议值或区间|推导条件|验证指标”,不得只给一组所谓通用最优参数。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 每个疑似泄漏关联借用者、持有路径、归还位置和可复现条件。 - 容量建议包含实例与分片总量、服务端限制、当前值、推导条件和待测指标。 - 不把池耗尽直接判为池过小,实测与静态风险分开报告。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里云《JedisPool资源池优化》](https://help.aliyun.com/zh/redis/use-cases/jedispool-optimization) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
用于热点商品、看板、配置和排行榜访问集中,区分读热点与写热点并验证一致性。
## 任务目标 请定位 Redis 热 Key 流量,并评审访问分散方案。 以核查和评审为主,给出有证据的判断及可复核的修改建议;本次用户另有明确实现要求时,按其授权范围执行。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 热点业务:从当前问题或已有访问采样中选择集中访问的业务对象;没有热度证据时从调用代码识别热点候选,先建立观测窗口,不将大 Key 直接认定为热 Key。 工程与访问资料:读取 Key 生成与访问代码、缓存更新和回源链路、实例拓扑以及已有采样和监控记录,自动确认客户端、分片与可用观测能力。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 关联业务入口、Key 模式、读写调用和单 Key 所在分片。 - 读取同一时间窗口的访问频率、响应体大小、读写比例及集中来源。 - 追踪本地缓存、请求合并、TTL、更新失效和数据库回源策略。 - 核对实例类型与客户端能力,区分单 Key、单分片和全实例容量压力。 ### 可采用的默认处理 - 默认只读定位与方案评审,不复制热点数据、改分片或启用读写分离。 - 没有实测时只列热点候选及有预算的采样方法,收益作为待验证假设。 - 一致性要求未知时保留现有读取路径,缓存副本和本地短缓存仅作为附条件候选。 ### 必须有依据的事项 - 状态、库存、权限等读取是否允许陈旧及可容忍时间没有依据时,不选择牺牲一致性的分流方案。 - 热点缓存失效后的权威来源或业务失败行为不明时,不把无限回源或成功空结果当成降级。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 没有流量记录时交付热点证据采集表和单 Key、分片、实例压力的判别流程。 - 提供请求合并、限流、本地缓存与副本的条件对比,以及热点切换和更新失败的测试矩阵。 ## 执行要求 适用范围:Redis或Tair的访问热点处理;Key大小与访问热度分别判断。控制台能力和读写分离方案须核对实际实例类型与业务一致性要求。 定位单个 Key 所在的具体分片;选择热点复制或读写分离时,评估相应的一致性代价。 检查步骤: 1. 以业务入口和时间窗口确认访问集中在什么对象,区分单Key高频、单分片集中与全实例容量不足;离线数据大小不能作为访问频率的证据。 2. 结合应用采样与已有实例指标识别真正热点,记录读写比例、响应体大小、请求集中来源及下游行为;采集本身要有资源预算,避免无限记录所有请求。 3. 区分可短暂陈旧的读取与必须保持最新的状态决策,说明缓存未命中或热点失效时的回源承载量;写热点不要用只读扩容冒充解决方案。 4. 比较请求合并、业务限流、本地短缓存、热点副本或业务拆分,分别列出适用前提、更新成本与失败行为;不默认采用所有方案,也不只计算理论吞吐。 5. 为候选方案定义缓存更新、版本识别、失效与恢复流程,说明多副本之间可能短暂不一致时用户会看到什么,以及如何避免旧值长期残留。 6. 用正常流量、突发热点、热点切换和更新失败验证效果,记录单分片压力、用户延迟、错误和回源次数;上线先覆盖可控业务范围,保留快速撤回方案。 ## 交付与验收 输出要求:输出热点证据、读写分类、候选方案对比、流程与验证矩阵。结论必须说明获得的容量改善与牺牲的一致性或复杂度,未经实测的收益仅作为待验证假设。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - 热度结论有对应时间窗口和分片证据,读热点与写热点分别处理。 - 候选方案明确失效更新、旧值退出、回源压力和一致性代价。 - 测量覆盖延迟、错误、分片压力和回源次数,未经测量不写容量提升数字。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里云《Tair:大Key和热Key》](https://help.aliyun.com/zh/redis/user-guide/identify-and-handle-large-keys-and-hotkeys/) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。
从业务访问和数据生命周期设计 Key、值结构、过期、淘汰与集群分布,区分产品建议与 Redis 的硬限制。
## 任务目标 请根据业务访问和数据生命周期设计 Redis Key、缓存策略及数据结构。 交付能用于评审或后续实施的具体方案、规则与样例;未要求实施的部分不声称已经落地。 ## 输入信息(选填) 两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。 缓存业务:从当前需求与代码选择一个有明确读取、更新和恢复来源的缓存对象;留空时优先整理已有 Key 的命名与生命周期,不凭空新增缓存业务。 工程与数据资料:读取 Key 构造、序列化、TTL、更新失效和回源代码,以及实体、查询、客户端依赖与 Redis 拓扑配置,自动归纳数据规模和版本边界。 ## 信息不完整时 先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。 ### 优先确认 - 识别 Redis 是可重建缓存还是唯一存储,追踪每类数据的权威来源。 - 盘点 Key 前缀、实体与租户维度、数据结构、序列化格式和多 Key 操作。 - 读取创建、续期、删除、失效失败及缓存未命中的处理路径。 - 核对单机、哨兵、原生集群或代理模式,检查 hash tag 与集合增长边界。 ### 可采用的默认处理 - 默认输出设计和兼容方案,不清理现有 Key 或改淘汰策略。 - 已有数据源、格式和拓扑优先;未知 TTL 不填固定值,以生命周期依据决定后再落值。 - 不默认引入 Tair 专有数据结构或不存在的租户维度;容量未知则按字节与增长量列估算式。 ### 必须有依据的事项 - 权威数据源和数据丢失后的可恢复性不明时,不能定义自动过期或淘汰后的业务结果。 - 读取一致性与租户或组织归属未确定时,不给可能串数据或改变状态决策的缓存共享规则。 只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。 ### 资料仍不足时的交付 - 无工程时交付 Key 字典、数据结构选择和生命周期表的可填写示例,明确哪些字段待业务确认。 - 提供首次回源、更新失败、格式升级、多 Key 限制和容量增长的验收用例。 ## 执行要求 适用范围:开源Redis或Tair兼容场景;需要明确单机、哨兵、原生集群或代理模式。Tair增强数据结构不作为开源Redis默认功能。 检查 Key 与值的规模、序列化及集群分布,避免命名或 hash tag 造成倾斜。 检查步骤: 1. 明确Redis在该业务中承担可重建缓存还是唯一数据存储,逐项列出数据丢失、淘汰和节点故障后的业务后果,只有明确恢复来源后才能制定缓存失效策略。 2. 按读取、更新、批量访问和统计需要选择数据结构,说明单个对象与集合边界;估算一条记录、一个Key和全年增长的规模,不用条数代替内存字节数。 3. 给出Key命名表,覆盖业务前缀、环境、版本、实体标识及实际存在的租户维度;控制可读性与长度,避免把敏感信息直接作为可见Key。 4. 设计过期、续期、失效和淘汰后的处理,检查批量同刻过期是否会集中访问权威存储;缓存写入或失效失败时明确业务结果,不把命中率当作一致性保证。 5. 核对多Key操作在目标拓扑中的限制,以及hash tag能否导致大量对象聚集在同一分片;如需序列化升级,规划新旧格式的读取和退出顺序。 6. 生成正常读取、首次回源、更新失败、缓存缺失及容量增长的验证样例,观察延迟、回源量和内存变化;把文档建议阈值与当前业务实测限制分开展示。 ## 交付与验收 输出要求:输出Key字典、数据结构方案、生命周期表、失败行为、容量估算与验收用例。字典需含示例、值定义、过期依据、增长上限、拥有模块和兼容策略,不填写未经测量的性能收益。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。 ### 本条完成检查 - Key 字典含值语义、拥有模块、过期依据、增长边界和新旧格式兼容。 - 生命周期说明缓存缺失、淘汰、更新失败与恢复来源,不以命中率代替一致性。 - 多 Key 与分片结论匹配真实拓扑,容量估算和实测数据清楚区分。 按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。 ## 参考资料与适用边界 来源(核验日期:2026-09-08): [阿里云《云数据库 Tair(兼容 Redis)开发运维规范》](https://help.aliyun.com/zh/redis/use-cases/development-and-o-and-m-standards-for-apsaradb-for-redis) 整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。