io.github.trunks2008:ulquiorra-cache

a tool about bilayer cache


License
Apache-2.0

Documentation

ulquiorra 缓存组件

基于caffeine和redis进行封装,简化项目中本地缓存及二级缓存使用。

一、依赖

jar包已上传中央仓库,maven引入:

<dependency>
  <groupId>io.github.trunks2008</groupId>
  <artifactId>ulquiorra-cache</artifactId>
  <version>0.0.1-RELEASE</version>
</dependency>

gradle引入:

dependencies {
    implementation("io.github.trunks2008:ulquiorra-cache:0.0.1-RELEASE")
}

二、只开启本地缓存模式

application.yml中添加配置:

caffeine:
  initialCapacity: 128 #起始大小
  maximumSize: 1024    #最大
  expireAfterWrite: 60 #过期时间

启动类使用注解:@EnableMonoLayerCache

1、代码操作模式

可直接使用CaffeineUtil类操作本地缓存:

CaffeineUtil.put("aaa","bbb");
Object aaa = CaffeineUtil.get("aaa");

2、注解模式

可使用spring原生注解操作缓存

starter中已包含@EnableCaching注解,项目中无需重复添加开启

@GetMapping("test2")
@Cacheable(value = "cacheName",key = "#key")
public Object test2(String key){
    System.out.println("进入方法,未走缓存");
    return "key:"+key;
}

三、注解同时管理Caffeine+Redis 两级缓存模式

设计思路:

1、使用方式

由于同时使用了CaffeineRedis,所以需要修改配置文件,Redis配置:

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    database: 0
    timeout: 10000ms
    lettuce:
      pool:
        max-active: 8
        max-wait: -1ms
        max-idle: 8
        min-idle: 0

二级缓存配置,支持分别设置两级缓存的独立过期时间:

bilayer:
  allowNull: true
  init: 128
  max: 1024
  expireAfterWrite: 30  #Caffeine过期时间
  redisExpire: 60      #Redis缓存过期时间

在启动类添加注解启动:

@EnableBiLayerCache

启动后,使用Spring缓存注解即可实现缓存管理。

2、本地缓存一致性问题

使用Redis消息订阅方式解决

在任何一台主机修改本地缓存后,会异步通知所有其他主机,修改相同key的缓存值


更多的设计细节,可以参考我之前的两篇文章:

Redis+Caffeine两级缓存,让访问速度纵享丝滑

基于Spring接口,集成Caffeine+Redis两级缓存