接口 SohelpCacheProvider
public interface SohelpCacheProvider
缓存提供者接口
定义了统一的缓存操作契约,所有缓存实现均需实现此接口。
支持三种内置实现:
MemorySohelpCacheProvider— 内存缓存(Hutool TimedCache)RedisSohelpCacheProvider— Redis 缓存(RedisTemplate + Jackson 序列化)NoneSohelpCacheProvider— 不缓存(直接查询数据库)
也可实现此接口扩展 Caffeine、EhCache 等第三方缓存。
- 从以下版本开始:
- 2026-03-23
- 作者:
- AaronFung
-
方法详细资料
-
get
获取缓存值根据给定的缓存键查询对应的缓存值。若缓存未命中(key 不存在或已过期), 则返回
null。- 参数:
key- 缓存键,不允许为null- 返回:
- 缓存值;未命中时返回
null
-
put
写入缓存(使用构造时设定的默认 TTL)将键值对存入缓存,过期时间采用实例创建时指定的默认 TTL。 若 key 已存在,则覆盖旧值并重置过期时间。
- 参数:
key- 缓存键,不允许为nullvalue- 缓存值,允许为null(具体行为取决于实现)
-
put
写入缓存并指定 TTL将键值对存入缓存,并使用调用方显式指定的 TTL 作为过期时间。 若 key 已存在,则覆盖旧值并重置过期时间。
- 参数:
key- 缓存键,不允许为nullvalue- 缓存值,允许为null(具体行为取决于实现)ttlSeconds- TTL(秒),0 或负数表示永不过期
-
remove
删除指定缓存项从缓存中移除给定 key 对应的键值对。若 key 不存在,则不做任何操作。
- 参数:
key- 缓存键,不允许为null
-
clear
void clear()清空该命名空间下的所有缓存移除当前缓存实例管理的全部键值对。对于 Redis 实现, 仅清除当前命名空间前缀下的 key,不影响其他命名空间。
-
contains
判断指定 key 是否存在且未过期检查给定的缓存键是否仍然有效(存在且未超过 TTL)。
- 参数:
key- 缓存键,不允许为null- 返回:
true表示 key 存在且未过期;false表示不存在或已过期
-
isEnabled
boolean isEnabled()是否启用缓存NONE 模式返回
false,调用方应检查此标志并直接查询数据库, 避免无效缓存逻辑。MEMORY 和 REDIS 模式均返回true。- 返回:
true表示 MEMORY 或 REDIS 模式,缓存已启用;false表示 NONE 模式,缓存未启用
-
size
int size()获取当前缓存中的 key 数量返回当前命名空间下有效(未过期)的缓存条目数。
- 返回:
- key 数量;NONE 模式固定返回 0
-
keys
获取当前命名空间下所有缓存 key(不含前缀)返回当前缓存实例管理的所有有效 key 集合。对于 Redis 实现, 返回的 key 已去除命名空间前缀。
- 返回:
- key 集合,不会返回
null;NONE 模式返回空集合
-
getType
String getType()获取缓存提供者类型名称用于日志输出、监控等场景,标识当前使用的缓存类型。
- 返回:
- 缓存类型标识字符串,可能的值为
"MEMORY"、"REDIS"或"NONE"
-