springboot整合jetcache實際操作

木蘭綴露發表於2020-10-17

資源準備:

        1)可以進行快取讀寫的redis服務

        2)可以服務呼叫的springboot正常專案

程式碼整合:

1、依賴引入

 <!--jetcache快取技術的引入-->
        <dependency>
            <groupId>com.alicp.jetcache</groupId>
            <artifactId>jetcache-starter-redis</artifactId>
            <version>2.5.11</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.1</version>
        </dependency>
        <!--redis 依賴common-pool2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.4.3</version>
        </dependency>

 推薦這個配置,如果只引入第一個,測試發現無法呼叫redis使用@cached等方式不起作用

2、配置檔案裡進行redis設定

jetcache:
  statIntervalMinutes: 15
  areaInCacheName: false
  hidePackages: com.sasa.demo
  local:
    # 預設2小時本地快取
    default:
      type: caffeine
      keyConvertor: fastjson
      expireAfterWriteInMillis: 3600000
      expireAfterAccessInMillis: 1800000
  remote:
    # 預設2小時的遠端快取
    default:
      type: redis
      expireAfterWriteInMillis: 43200000
      keyConvertor: fastjson
      valueEncoder: kryo
      valueDecoder: kryo
      poolConfig:
        minIdle: 5
        maxIdle: 20
        maxTotal: 50
      host: ${REDIS_HOST:redis的ip}
      port: ${REDIS_PORT:16379}

 3、啟動類註解

@EnableMethodCache(basePackages = "com.sasa.demo")//專案主路徑
@EnableCreateCacheAnnotation

4、方法註解使用

@Service
public class CacheTestServiceImp implements CacheTestService {

    @Override
    @Cached(name="ls:dlc:int",key="#id",cacheType=CacheType.REMOTE)
    public String cacheReadAndWriter(String id) {
        return getData(id);
    }

    public String getData(String id){
        System.out.print(id);
        User u=new User();
        u.setId(id);
        u.setName("dhj");
        return u.getName();
    }
}

還有其他註解方式,就不多羅列幾個了

相關文章