SuperAPI AI 工具集

specsfy-specialist-redis

通用与其它

查看项目

更新于 10-16 03:49

技能介绍

用途:在 Redis/Valkey 上设计缓存、会话、限流器、分布式锁、简单队列或 Stream,或诊断缓存击穿(stampede)、热 key、意外淘汰与不可用;也用于审查持久化(RDB/AOF)、Cluster/Sentinel 与内存策略。不用于建模持久化源数据——Redis 是加速器或临时结构,真值与完整性归 $specsfy-specialist-postgres 等数据库。可与 $specsfy-specialist-observability 配合做指标告警,应用驱动为框架时配合 $specsfy-specialist-laravel 等。

流程:明确数据用途、source of truth、所需一致性及重启后丢数据的容忍度;估算基数、值大小、读写速率、TTL 与访问模式;选数据结构并用稳定命名空间键(app:recurso:id),避免键基数爆炸;显式设计击穿、失效策略、重试及 Redis 不可用时的 fail open/fail closed;按数据角色配置 maxmemory、淘汰策略与持久化;测试并发写、过期、不可用与冷启动恢复;在宣告完成前测量命中率、p50/p99 延迟、内存、连接数与热 key。

模式:缓存键给显式 TTL 并明确失效责任方;避免 KEYS *、无维护的 FLUSHALL/FLUSHDB、大集合无 LIMIT 的 SORT,用 SCAN 游标迭代;需要“读改写”无竞态时用 INCR、SETNX、GETEX 或 Lua(EVAL/EVALSHA);分布式锁用带超时和可验证持有者的 lease:SET key token NX PX ttl,仅用脚本确认 GET key == token 后 DEL,禁止无条件 DEL;按工作负载隔离命名空间与淘汰策略;对象序列化带 schema 版本,不存敏感明文;区分交付语义:Pub/Sub 是 fire-and-forget,Streams + consumer group 提供 at-least-once 并需消费端幂等重处理。

反模式:TTL 无 jitter 造成惊群;超时后盲目重试非幂等命令;键基数失控(无 TTL 的 session:<uuid>)导致 OOM;SETNX+DEL 无 TTL 的锁会永久卡死;把默认 noeviction 当自动缓存(到限后拒写);不验证就宣称锁安全或队列可靠。

验证:覆盖 miss/hit、过期、模拟击穿、Redis 不可用,每个场景有文档化预期;在贴近真实的拓扑验证内存限制、淘汰、持久化与故障转移;查看 INFO、SLOWLOG GET 与客户端指标且不泄露敏感值;对比有/无缓存的应用行为。详见 references/standards.md。