root
|
ba2606ea46
|
fix(cache): set/expire/getOrLoad 对 ttl<=0 fail-fast,杜绝 expire 误删 key
expire(key, ttl<=0) 经 applyJitter 透传 0/负值,Redis EXPIRE 非正值会立即删 key
并返回 1,使"续期"静默删数据且报 true;set(ttl<=0) 则下发非法过期抛
RedisSystemException。统一在 set/expire/doGetOrLoad 入口 requirePositiveTtl 校验,
非正 TTL 直接抛 IllegalArgumentException。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 09:46:55 +08:00 |
|
root
|
effa7bf38a
|
test(cache): 集成测试击穿并发(互斥锁下 loader 仅回源一次)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 05:10:35 +08:00 |
|
root
|
6c512ba3b2
|
test(cache): 集成测试显式 expire 续期与滑动过期(真实值续、空标记不续)
|
2026-06-26 05:08:25 +08:00 |
|
root
|
b5a649110e
|
test(cache): 集成测试穿透防护(空值缓存,loader 仅调用一次)
|
2026-06-26 05:06:05 +08:00 |
|
root
|
9abff913e5
|
test(cache): 集成测试 set/get/exists/delete 闭环 + Redis 探测脚手架
|
2026-06-26 05:03:19 +08:00 |
|
root
|
c4ad3670fc
|
feat(cache): 自动装配 + spring.factories 注册
|
2026-06-26 04:59:41 +08:00 |
|
root
|
037fdc4f9c
|
feat(cache): getOrLoad 三防(空值穿透 + TTL 抖动雪崩 + 互斥锁击穿 + 超时降级)
|
2026-06-26 04:55:42 +08:00 |
|
root
|
d164b89067
|
feat(cache): 模板读写基础(set/get/delete/exists/expire + TTL 抖动 + 滑动续期)
|
2026-06-26 04:51:07 +08:00 |
|
root
|
9605dca962
|
feat(cache): 配置属性 redis-cache.*(TTL/抖动/滑动/击穿锁)
|
2026-06-26 04:43:28 +08:00 |
|
root
|
ecbdfd8907
|
feat(cache): 值编解码器(fastjson 序列化 + 空值标记)
|
2026-06-26 04:41:02 +08:00 |
|
root
|
ce370afa83
|
feat(cache): 缓存常量与 key 构造器(前缀 + 环境隔离 + 锁 key 派生)
|
2026-06-26 04:38:02 +08:00 |
|
root
|
74f68c9680
|
feat: Redis Stream Spring Boot starter 首次提交
封装 Redis Streams 收发,零业务依赖。含自动装配、发送模板、监听容器、
autoclaim 崩溃恢复+死信淘汰、stream 定时裁剪、gzip 编解码、环境隔离。
本次随提交的改进:
- per-handler 重试次数:getMaxRetryTimes() 覆写生效,全局 redis-stream.max-retry 兜底
- 死信回调传入反序列化后的业务消息(saveExceptionFromFields)
- pom 升级 maven-surefire-plugin 至 2.22.2,使 JUnit 5 测试真正执行
- 集成测试连接信息改为 -D 注入(默认 localhost:6379),凭据不入代码
- lombok 改为 optional,不污染下游依赖
- 新增 README 使用文档
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-24 20:55:12 +08:00 |
|