类 MemorySohelpCacheProvider
- 所有已实现的接口:
SohelpCacheProvider
基于 Hutool TimedCache,支持 TTL 配置。
- TTL ≤ 0:永不过期(等效于原有 ConcurrentHashMap 行为)
- TTL > 0:指定秒数后自动过期
内部在每次读写操作前调用 StampedCache.prune() 清理过期条目,
以保证查询结果的准确性。
- 从以下版本开始:
- 2026-03-23
- 作者:
- AaronFung
-
构造器详细资料
-
MemorySohelpCacheProvider
public MemorySohelpCacheProvider(long defaultTtlSeconds) 构造内存缓存提供者初始化 Hutool
TimedCache实例。将秒级 TTL 转换为毫秒后传入, TTL 为 0 或负数时,TimedCache 的 timeout 设为 0,表示永不过期。- 参数:
defaultTtlSeconds- 默认 TTL(秒),0 或负数表示永不过期
-
-
方法详细资料
-
get
获取缓存值根据给定的缓存键查询对应的缓存值。若缓存未命中(key 不存在或已过期), 则返回
null。先清理过期条目,再从缓存中获取值。使用
false参数表示不更新最后访问时间, 以保持原始的过期策略。- 指定者:
get在接口中SohelpCacheProvider- 参数:
key- 缓存键,不允许为null- 返回:
- 缓存值;未命中或已过期时返回
null
-
put
写入缓存(使用构造时设定的默认 TTL)将键值对存入缓存,过期时间采用实例创建时指定的默认 TTL。 若 key 已存在,则覆盖旧值并重置过期时间。
使用构造时设定的默认 TTL 写入缓存。先清理过期条目, 然后根据默认 TTL 是否大于 0 决定是否设置过期时间。
- 指定者:
put在接口中SohelpCacheProvider- 参数:
key- 缓存键,不允许为nullvalue- 缓存值
-
put
写入缓存并指定 TTL将键值对存入缓存,并使用调用方显式指定的 TTL 作为过期时间。 若 key 已存在,则覆盖旧值并重置过期时间。
使用调用方指定的 TTL 写入缓存。先清理过期条目, 然后根据传入的 TTL 是否大于 0 决定是否设置过期时间。
- 指定者:
put在接口中SohelpCacheProvider- 参数:
key- 缓存键,不允许为nullvalue- 缓存值ttlSeconds- TTL(秒),0 或负数表示永不过期
-
remove
删除指定缓存项从缓存中移除给定 key 对应的键值对。若 key 不存在,则不做任何操作。
从内存缓存中移除指定 key 对应的条目。若 key 不存在,则不做任何操作。
- 指定者:
remove在接口中SohelpCacheProvider- 参数:
key- 缓存键,不允许为null
-
clear
public void clear()清空该命名空间下的所有缓存移除当前缓存实例管理的全部键值对。对于 Redis 实现, 仅清除当前命名空间前缀下的 key,不影响其他命名空间。
清空内存缓存中的所有键值对。
- 指定者:
clear在接口中SohelpCacheProvider
-
contains
判断指定 key 是否存在且未过期检查给定的缓存键是否仍然有效(存在且未超过 TTL)。
先清理过期条目,然后通过尝试获取值来判断 key 是否存在且未过期。
- 指定者:
contains在接口中SohelpCacheProvider- 参数:
key- 缓存键,不允许为null- 返回:
true表示 key 存在且未过期;false表示不存在或已过期
-
isEnabled
public boolean isEnabled()是否启用缓存NONE 模式返回
false,调用方应检查此标志并直接查询数据库, 避免无效缓存逻辑。MEMORY 和 REDIS 模式均返回true。内存缓存始终处于启用状态。
- 指定者:
isEnabled在接口中SohelpCacheProvider- 返回:
- 始终返回
true
-
size
public int size()获取当前缓存中的 key 数量返回当前命名空间下有效(未过期)的缓存条目数。
先清理过期条目,再返回剩余有效缓存条目的数量。
- 指定者:
size在接口中SohelpCacheProvider- 返回:
- 当前有效的缓存条目数量
-
keys
获取当前命名空间下所有缓存 key(不含前缀)返回当前缓存实例管理的所有有效 key 集合。对于 Redis 实现, 返回的 key 已去除命名空间前缀。
先清理过期条目,再返回所有有效 key 的集合。
- 指定者:
keys在接口中SohelpCacheProvider- 返回:
- 所有有效缓存 key 的集合,不会返回
null
-
getType
获取缓存提供者类型名称用于日志输出、监控等场景,标识当前使用的缓存类型。
- 指定者:
getType在接口中SohelpCacheProvider- 返回:
- 固定返回
"MEMORY",标识当前为内存缓存实现
-