外观
Store 组件
Store 为临时数据、计数器、缓存和并发控制提供统一接口。例如,将一次计算的结果保存五分钟:单实例可存入本地内存,需要多个实例共享时改用 Redis,调用方继续使用 StoreTemplate。
组件对应 springboot-component-store,只提供技术能力。数据键的设计、缓存失效、业务授权以及数据库事务由应用负责;文件上传和对象存储接入见 Business 的资源文件模块。
能力范围
| 任务 | 入口 | 用途 |
|---|---|---|
| 读写数据 | StoreTemplate<T> | Value、Map、Set、List、long 原子计数,支持键过期与扫描 |
| 隔离数据与编码 | StoreClient、StoreNamespace、StoreCodec<T> | 按命名空间创建模板,显式约定序列化协议 |
| 缓存查询结果 | DataCacheUtil | 对象和列表的 JSON 缓存,未命中时加锁、二次检查后回源 |
| 保护临界区 | StoreLockManager、@StoreLockAop | 单锁、批量锁、限时等待,以及同步事务完成后释放 |
| 控制调用速率 | StoreRateLimiterManager | 按逻辑键配置许可速率,立即尝试或阻塞获取 |
本地后端基于 Caffeine、JVM 锁和 Guava 限流器,数据可能因容量淘汰而提前消失,进程退出后不保留。Redis 后端基于 Redisson,共享范围取决于连接目标和命名空间;可靠性、容量与持久化仍由 Redis 部署决定。二者的接口一致,但限流节奏、空集合生命周期等细节不同。
接入入口
以下运行时依赖的 groupId 均为 com.own.component,版本由 Component BOM 管理:
| 场景 | artifactId |
|---|---|
| Spring Boot 单实例或本地演示 | springboot-component-store-starter-local |
| Spring Boot 多实例共享 | springboot-component-store-starter-redis |
| 只声明可复用接口依赖 | springboot-component-store-api |
| 非 Spring 环境手动装配 | springboot-component-store-caffeine 或 springboot-component-store-redisson |
springboot-component-store 自身是聚合与版本管理 POM,不是运行时 Starter。只引入 API 也不会创建存储、锁或缓存 Bean。
阅读顺序
- 快速开始:不连接外部服务,完成字符串存取和计数。
- 后端与配置:选择本地或 Redis,配置容量、命名空间、Codec 与扩展 Bean。
- 数据操作:键值、集合、计数、过期和扫描的具体语义。
- 查询结果缓存:缓存对象与列表,控制有效期和失效。
- 锁与限流:保护临界区、处理事务和控制调用速率。
按文件查阅方法
重点文件与方法逐项说明核心类、接口和方法重载的用途、参数、返回值、调用示例与注意事项,并链接到公开仓库对应源码。