跳转到正文

Store 组件

Store 为临时数据、计数器、缓存和并发控制提供统一接口。例如,将一次计算的结果保存五分钟:单实例可存入本地内存,需要多个实例共享时改用 Redis,调用方继续使用 StoreTemplate

组件对应 springboot-component-store,只提供技术能力。数据键的设计、缓存失效、业务授权以及数据库事务由应用负责;文件上传和对象存储接入见 Business 的资源文件模块

能力范围

任务入口用途
读写数据StoreTemplate<T>Value、Map、Set、List、long 原子计数,支持键过期与扫描
隔离数据与编码StoreClientStoreNamespaceStoreCodec<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-caffeinespringboot-component-store-redisson

springboot-component-store 自身是聚合与版本管理 POM,不是运行时 Starter。只引入 API 也不会创建存储、锁或缓存 Bean。

阅读顺序

  1. 快速开始:不连接外部服务,完成字符串存取和计数。
  2. 后端与配置:选择本地或 Redis,配置容量、命名空间、Codec 与扩展 Bean。
  3. 数据操作:键值、集合、计数、过期和扫描的具体语义。
  4. 查询结果缓存:缓存对象与列表,控制有效期和失效。
  5. 锁与限流:保护临界区、处理事务和控制调用速率。

按文件查阅方法

重点文件与方法逐项说明核心类、接口和方法重载的用途、参数、返回值、调用示例与注意事项,并链接到公开仓库对应源码。