接口 SohelpCacheProvider

所有已知实现类:
MemorySohelpCacheProvider, NoneSohelpCacheProvider, RedisSohelpCacheProvider

public interface SohelpCacheProvider
缓存提供者接口

定义了统一的缓存操作契约,所有缓存实现均需实现此接口。

支持三种内置实现:

也可实现此接口扩展 Caffeine、EhCache 等第三方缓存。

从以下版本开始:
2026-03-23
作者:
AaronFung
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    清空该命名空间下的所有缓存
    boolean
    判断指定 key 是否存在且未过期
    get(String key)
    获取缓存值
    获取缓存提供者类型名称
    boolean
    是否启用缓存
    获取当前命名空间下所有缓存 key(不含前缀)
    void
    put(String key, Object value)
    写入缓存(使用构造时设定的默认 TTL)
    void
    put(String key, Object value, long ttlSeconds)
    写入缓存并指定 TTL
    void
    删除指定缓存项
    int
    获取当前缓存中的 key 数量
  • 方法详细资料

    • get

      Object get(String key)
      获取缓存值

      根据给定的缓存键查询对应的缓存值。若缓存未命中(key 不存在或已过期), 则返回 null

      参数:
      key - 缓存键,不允许为 null
      返回:
      缓存值;未命中时返回 null
    • put

      void put(String key, Object value)
      写入缓存(使用构造时设定的默认 TTL)

      将键值对存入缓存,过期时间采用实例创建时指定的默认 TTL。 若 key 已存在,则覆盖旧值并重置过期时间。

      参数:
      key - 缓存键,不允许为 null
      value - 缓存值,允许为 null(具体行为取决于实现)
    • put

      void put(String key, Object value, long ttlSeconds)
      写入缓存并指定 TTL

      将键值对存入缓存,并使用调用方显式指定的 TTL 作为过期时间。 若 key 已存在,则覆盖旧值并重置过期时间。

      参数:
      key - 缓存键,不允许为 null
      value - 缓存值,允许为 null(具体行为取决于实现)
      ttlSeconds - TTL(秒),0 或负数表示永不过期
    • remove

      void remove(String key)
      删除指定缓存项

      从缓存中移除给定 key 对应的键值对。若 key 不存在,则不做任何操作。

      参数:
      key - 缓存键,不允许为 null
    • clear

      void clear()
      清空该命名空间下的所有缓存

      移除当前缓存实例管理的全部键值对。对于 Redis 实现, 仅清除当前命名空间前缀下的 key,不影响其他命名空间。

    • contains

      boolean contains(String key)
      判断指定 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

      Set<String> keys()
      获取当前命名空间下所有缓存 key(不含前缀)

      返回当前缓存实例管理的所有有效 key 集合。对于 Redis 实现, 返回的 key 已去除命名空间前缀。

      返回:
      key 集合,不会返回 null;NONE 模式返回空集合
    • getType

      String getType()
      获取缓存提供者类型名称

      用于日志输出、监控等场景,标识当前使用的缓存类型。

      返回:
      缓存类型标识字符串,可能的值为 "MEMORY""REDIS""NONE"