日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

layering-cache

發布時間:2024/1/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 layering-cache 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

layering-cache

layering-cache是一個支持分布式環境的多級緩存框架,使用方式和spring-cache類似,主要目的是在使用注解的時候支持配置過期時間。

layering-cache其實是一個兩級緩存,一級緩存使用Caffeine作為本地緩存,二級緩存使用redis作為集中式緩存。并且基于redis的Pub/Sub做緩存的刪除,所以它是一個適用于分布式環境下的一個緩存系統。

支持

  • 支持緩存監控統計
  • 支持緩存過期時間在注解上直接配置
  • 支持二級緩存的自動刷新(當緩存命中并發現緩存將要過期時會開啟一個異步線程刷新緩存)
  • 刷新緩存分為強刷新和軟刷新,強刷新直接調用緩存方法,軟刷新直接改緩存的時間
  • 緩存Key支持SpEL表達式
  • 新增FastJsonRedisSerializer,KryoRedisSerializer序列化,重寫String序列化。
  • 支持同一個緩存名稱設置不同的過期時間
  • 輸出INFO級別的監控統計日志
  • 二級緩存是否允許緩存NULL值支持配置
  • 二級緩存空值允許配置時間倍率

快速開始

集成 Spring 4.x

  • 引入layering-cache
    • maven 方式
    <dependency><groupId>com.github.xiaolyuh</groupId><artifactId>layering-cache-aspectj</artifactId><version>${layering.version}</version> </dependency>
    • gradle 方式
    compile 'com.github.xiaolyuh:layering-cache:${layering.version}'

    聲明RedisTemplate

    如果項目中沒有聲明RedisTemplate Bean 可以參考下面鏈接 聲明RedisTemplate

    聲明CacheManager和LayeringAspect

    /*** 多級緩存配置** @author yuhao.wang3*/ @Configuration @EnableAspectJAutoProxy public class CacheConfig {@Beanpublic CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {return new LayeringCacheManager(redisTemplate);}@Beanpublic LayeringAspect layeringAspect() {return new LayeringAspect();} }

    集成 Spring Boot

    引入layering-cache 就可以了

    <dependency><groupId>com.github.xiaolyuh</groupId><artifactId>layering-cache-starter</artifactId><version>${layering.version}</version> </dependency>

    使用

    注解形式

    直接在需要緩存的方法上加上Cacheable、CacheEvict、CachePut注解。

    • Cacheable注解
    @Cacheable(value = "user:info", depict = "用戶信息緩存", ttfirstCache = @FirstCache(expireTime = 4, timeUnit = TimeUnit.SECONDS), ttsecondaryCache = @SecondaryCache(expireTime = 10, preloadTime = 3, forceRefresh = true, timeUnit = TimeUnit.SECONDS)) public User getUser(User user) { tlogger.debug("調用方法獲取用戶名稱"); treturn user; }
    • CachePut注解
    @CachePut(value = "user:info", key = "#userId", depict = "用戶信息緩存", ttfirstCache = @FirstCache(expireTime = 4, timeUnit = TimeUnit.SECONDS), ttsecondaryCache = @SecondaryCache(expireTime = 10, preloadTime = 3, forceRefresh = true, timeUnit = TimeUnit.SECONDS)) public User putUser(long userId) { tUser user = new User(); tuser.setUserId(userId); tuser.setAge(31); tuser.setLastName(new String[]{"w", "y", "h"}); treturn user; }
    • CacheEvict注解
    @CacheEvict(value = "user:info", key = "#userId") public void evictUser(long userId) { } @CacheEvict(value = "user:info", allEntries = true) public void evictAllUser() { }

    更多使用方法可以查看官方文檔

    開源地址:

    https://gitee.com/xiaolyuh/layering-cache

    總結

    以上是生活随笔為你收集整理的layering-cache的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。