91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot之本地緩存(guava與caffeine)

發布時間:2020-07-18 19:05:53 來源:網絡 閱讀:1086 作者:軟件老王 欄目:軟件技術

1. 場景描述

因項目要使用本地緩存,具體為啥不用redis等,就不討論,記錄下過程,希望能幫到需要的朋友。

2.解決方案

2.1 使用guava作為本地緩存

初步的想法是使用guava,因為本身項目中就有guava的denpency。

2.1.1 pom文件

需要3個dependency,如下:

  <!--軟件老王 1-->
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
  </dependency>
  <!--軟件老王 2-->
    <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.3.18.RELEASE</version>
  </dependency>
   <!--軟件老王 3-->
   <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>24.0-jre</version>
     </dependency>
2.1.2 java類

(1)GuavaCacheManager

新建bean,返回及配置guava的GuavaCacheManager。

import com.google.common.cache.CacheBuilder;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.guava.GuavaCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;
/**
* 
* @auther: 軟件老王
*/
@Configuration
@EnableCaching
public class GuavaCacheConfig {

    @Bean
    public CacheManager cacheManager() {
        GuavaCacheManager cacheManager = new GuavaCacheManager();
        cacheManager.setCacheBuilder(
                CacheBuilder.newBuilder().
                        expireAfterWrite(6, TimeUnit.HOURS).
                        maximumSize(1000)); //軟件老王,6小時過期,最大1000條
        return cacheManager;
    }
}

(2)spring注解標簽使用緩存

/**
* 
* @auther: 軟件老王
*/
  @Cacheable(value = "ruanjianlaowang")
    public VO<UserParm> getUserInfo(String token) {
        VO<UserParm> vo = userauthClient.verifyToken(token);
        return vo;
    }

guava本地緩存完成。

2.2 spring框架提供的本地緩存方案

spring中已經提供了抽象類,默認只需要配置加載jar包,配置type就可以了,但是從spring5開始,將guava的剔除掉了,替換成了caffeine,spring做了測試,作為本地緩存caffeine比guava要高出好多,我們也改成了caffeine作為本地緩存。

springboot與guava、caffeine等本地緩存,springboot1的時候還有guava,springboot2里面就把guava的緩存接口去掉了,所以前面guava本地緩存才需要定義Configuration,在這里面的話,就只需要在配置文件里面定義類型就會自動注入了。

springboot之本地緩存(guava與caffeine)

2.3 caffeine本地緩存
2.3.1 pom文件
        <!--軟件老王-->
       <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
            <version>2.8.0</version>
        </dependency>
2.3.2 配置文件
spring:
   cache:
      type: caffeine
      cache-names: bc.gateway.ut
      caffeine:
#        spec: maximumSize=5000,expireAfterWrite=20s
         spec: maximumSize=5000,expireAfterAccess=3600s

具體參數含義

/**
* @auther: 軟件老王
*/
? initialCapacity=[integer]: 初始的緩存空間大小
? maximumSize=[long]: 緩存的最大條數
? maximumWeight=[long]: 緩存的最大權重
? expireAfterAccess=[duration]: 最后一次寫入或訪問后經過固定時間過期
? expireAfterWrite=[duration]: 最后一次寫入后經過固定時間過期
? refreshAfterWrite=[duration]: 創建緩存或者最近一次更新緩存后經過固定的時間間隔,刷新緩存
2.3.3 使用方式還是spring的標簽不用動:
/**
* 
* @auther: 軟件老王
*/
  @Cacheable(value = "ruanjianlaowang")
    public VO<UserParm> getUserInfo(String token) {
        VO<UserParm> vo = userauthClient.verifyToken(token);
        return vo;
    }
2.4 關于spring緩存標簽的說明

四個標簽:

(1)@Cacheable,首先在緩存中查詢,沒有的話,進方法執行,執行完成后返回值放緩存;

(2)@CachePut,不進行查詢判斷,直接新增或者更新緩存內容,類似add或update;

(3)@CacheEvict,直接清除,類似delete。

(4)@Caching,1,2,3個組合

value 緩存的名稱,在 spring 配置文件中定義,必須指定至少一個 例如: @Cacheable(value=”laowang_cache1”) @Cacheable(value={””laowang_cache1,”laowang_cache2”}
key 緩存的 key,可以為空,如果指定要按照 SpEL 表達式編寫,如果不指定,則缺省按照方法的所有參數進行組合 @Cacheable(value=”laowang_cache1”,key=”#userName”)
condition 緩存的條件,可以為空,使用 SpEL 編寫,返回 true 或者 false,只有為 true 才進行緩存 @Cacheable(value=”laowang_cache1”, condition=”#userName.length()>11”)

I’m 「軟件老王」,如果覺得還可以的話×××更新秒知!歡迎討論×××

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

津市市| 阆中市| 普兰县| 云梦县| 弥渡县| 盐山县| 建昌县| 隆子县| 丹阳市| 修文县| 内江市| 鸡泽县| 彰武县| 十堰市| 嘉定区| 永安市| 安阳市| 盘锦市| 日喀则市| 延寿县| 扶余县| 桦甸市| 和田县| 惠来县| 乐东| 竹北市| 融水| 定襄县| 巴林右旗| 台北市| 大洼县| 洪雅县| 巴塘县| 福贡县| 北京市| 五指山市| 贵阳市| 唐山市| 逊克县| 贵港市| 四平市|