类 SohelpCacheManager

java.lang.Object
net.sohelp.boot.admin.core.cache.provider.SohelpCacheManager

@Component public class SohelpCacheManager extends Object
缓存管理器(工厂)

根据 sohelp-boot.cache.type 配置,为各缓存类创建对应的 SohelpCacheProvider 实例:

  • MEMORY(默认)— 内存缓存,基于 Hutool TimedCache
  • REDIS — Redis 缓存,需配置 Spring Data Redis
  • NONE — 不缓存,每次直接查询数据库

若 Redis 未配置但 type=REDIS,自动降级为内存缓存并输出警告日志。

全局 TTL(sohelp-boot.cache.ttl)优先级高于各缓存的默认 TTL; 若全局 TTL ≤ 0,则使用各缓存自身的 TTL。

自定义扩展:实现 SohelpCacheProvider 接口后, 在业务层直接 new 或通过 Spring 管理,传入各缓存类即可。

从以下版本开始:
2026-03-23
作者:
AaronFung
  • 构造器详细资料

    • SohelpCacheManager

      public SohelpCacheManager()
  • 方法详细资料

    • createProvider

      public SohelpCacheProvider createProvider(String namespace, long cacheTtlSeconds)
      创建指定命名空间的缓存提供者实例

      根据全局缓存配置(CacheConfig)中的类型和 TTL, 创建并返回对应的 SohelpCacheProvider 实现。创建流程如下:

      1. 读取全局缓存配置中的类型(MEMORY / REDIS / NONE)
      2. 计算有效 TTL:若全局 TTL 大于 0 则使用全局值,否则使用调用方传入的默认 TTL
      3. 根据类型创建对应实例;REDIS 类型在 RedisTemplate 为空时自动降级为 MEMORY
      参数:
      namespace - 缓存命名空间(Redis 模式下作 Key 前缀,内存模式下用于日志区分),不允许为 null
      cacheTtlSeconds - 该缓存的默认 TTL(秒),≤0 表示永不过期
      返回:
      对应类型的 SohelpCacheProvider 实例,不会返回 null