用途:面向 Java 后端,规范 Redis 缓存与 Redisson 分布式锁的写法,覆盖 Key 命名、过期时间、序列化、并发安全与缓存保护。
主要能力: 缓存 Key 规范:格式 {业务名}:{类型}:{ID},统一前缀,如 saas:user:detail:%s。 过期时间原则:热点数据长 TTL、非热点短 TTL,始终设 TTL。 序列化选择:StringRedisTemplate 适合纯字符串;RedisTemplate + Jackson2JsonRedisSerializer 推荐,可读且跨语言;JdkSerializationRedisSerializer 应避免;GenericJackson2JsonRedisSerializer 适合复杂对象,但含 @class 冗余。 Redisson 分布式锁三大模式:tryLock + watchDog(只指定 waitTime,不指定 leaseTime,看门狗默认 30s、约每 10s 续期);tryLock + leaseTime(指定 leaseTime 后看门狗不生效,需硬超时内完成);lock() 阻塞获取并启用看门狗。均须 try-finally 中检查 isHeldByCurrentThread() 后 unlock。 缓存三大问题:穿透用空值缓存(TTL 5 分钟)或布隆过滤器;击穿用互斥锁或永不过期加异步更新;雪崩给 TTL 加随机值(约 ±30%)。 本地缓存选择:Caffeine 适合单服务高频缓存,Redis 用于分布式共享,可组成 L1 本地 + L2 Redis。
使用方式:按模式配置 RedisTemplate 统一 Key/Value 序列化,业务代码遵循 Key 规范与 TTL 策略;锁操作按场景选择三种模式之一,并在 finally 中释放。
限制与注意:Redis 集群下 mget 跨 Slot 不可用,需循环 get 或 hash tag 固定 Slot;不涉及消息队列/发布订阅、Spring Session 共享、Jedis 与 Lettuce 选型(推荐 Lettuce)。本技能不收集、存储或传输任何用户数据。