Skip to content

缓存

  • 实现内存缓存,redis 缓存以及将内存作为以及缓存 redis 作为二级缓存的多级缓存实现。通过 redis 的 pub/sub 来清空各个主机中的内存缓存

  • 如果是 redis 或者多级缓存支持每个缓存空间自定义失效时间,如果没设置则使用默认的全局失效时间。规则缓存空间名称#时间和单位,使用#分割,前半段是缓存空间名称,后半段是时间和单位,最后一位必须是时间单位,支持:d:天,h:小时,m:分钟,s:秒

    java
    // 示例:这个示例标识这个缓存空间的失效时间的12天。
    @CacheConfig(cacheNames = "SysUser#12d")

依赖

xml
<dependency>
    <groupId>org.seedltd</groupId>
    <artifactId>seedltd-cache-starter</artifactId>
</dependency>

如果需要使用 redis 作为缓存那么你需要引入它

xml
<dependency>
    <groupId>org.seedltd</groupId>
    <artifactId>seedltd-redis-starter</artifactId>
</dependency>

属性

字段说明默认值可选值
seedltd.cache.enabled是否启用 redis 配置true-
seedltd.cache.cacheNullValues是否存储空值,默认 true,防止缓存穿透true-
seedltd.cache.type缓存类型,redis: redis 缓存,memory:内存缓存,multiple:多级缓存,先读 memory 在读 redis。默认:multiplemultiplemultipleredismemory
seedltd.cache.defaultExpiration全局过期时间,单位:分钟,0 不过期。默认 7 天10080-
seedltd.cache.cachePrefix缓存 key 的前缀cache-
seedltd.cache.memory.expireAfterWrite写入后过期时间,单位分钟。多级缓存下默认是 30 分钟,内存缓存设置该值无效,使用{@link CacheConfigProperties#getDefaultExpiration()} }。如果使用多级缓存这个值不能超过自定义的值。30-
seedltd.cache.memory.initialCapacity初始化缓存大小256-
seedltd.cache.memory.maximumSize最大缓存对象个数,超过此数量时之前放入的缓存将失效10240-
seedltd.cache.dbClear是否开启缓存延迟双删,memory模式下无效true-
seedltd.cache.delayTime延迟删除时间,单位毫秒。1000-

手动删除缓存

注意:如果有自定义失效时间那么在获取缓存空间的时候需要把#1h这个东西去掉

java
@Autowired
private CacheManager cacheManager

// 删除一个key
cacheManager.getCache("@CacheConfig 的 cacheNames 名称,例如:SysUser").evict("数据key");

粤ICP备2022017444号