亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot整合guava實(shí)現(xiàn)本地緩存的示例代碼

 更新時(shí)間:2025年06月18日 10:50:40   作者:spream至尊  
本文主要介紹了springboot整合guava實(shí)現(xiàn)本地緩存的示例代碼,包括三種回收方式及手動(dòng)清除方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、Springboot緩存

SpringBoot支持很多種緩存方式:redis、guava、ehcahe、jcache等等。

二、guava介紹

Guava Cache 是 Google 開源的一套開發(fā)工具集合,Guava Cache 是其中的一個(gè)專門用于處理本地緩存的輕量級(jí)框架,是全內(nèi)存方式的本地緩存,而且是線程安全的。
和 ConcurrentMap 相比,Guava Cache 可以限制內(nèi)存的占用,并可設(shè)置緩存的過期時(shí)間,可以自動(dòng)回收數(shù)據(jù),而 ConcurrentMap 只能通過靜態(tài)方式來控制緩存,移除數(shù)據(jù)元素需要顯示的方式來移除。

三、 緩存回收方式

1、基于容量回收

在這里插入圖片描述

2、基于時(shí)間回收

在這里插入圖片描述

3、基于引用回收

CacheBuilder.weakValues():和 CacheBuilder.weakKeys() 方法類似,該方法按照弱引用方式來存儲(chǔ)緩存項(xiàng)的值,允許系統(tǒng)垃圾回收時(shí)回收緩存項(xiàng)。
CacheBuilder.weakValues(),使用軟引用方式來包裝緩存值,只有在內(nèi)存需要時(shí)(一般在接近內(nèi)存溢出時(shí)),系統(tǒng)會(huì)按照全局LRU(least-recently-used)原則進(jìn)行垃圾回收??紤]到垃圾回收的性能問題,推薦使用基于容量的回收方式。

4、手動(dòng)回收

在這里插入圖片描述

guava使用

導(dǎo)入依賴

 <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>20.0</version>
 </dependency>

recordStats:開啟統(tǒng)計(jì)功能
stats:查看統(tǒng)計(jì)情況

void testRecordStats(){
        Cache<String, String> callCache = CacheBuilder.newBuilder().
                initialCapacity(5)
                .maximumSize(100)
                .recordStats()
                .expireAfterAccess(1, TimeUnit.SECONDS)
                .build();


        /**
        * CacheStats{hitCount=0, missCount=0, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
        */
        CacheStats stats = callCache.stats();
        System.out.println(stats);

    }

并發(fā)級(jí)別
調(diào)整concurrencyLevel即可

在這里插入圖片描述

5、代碼實(shí)例

/**
 * @Author sprem至尊
 * @Date 2022/10/24 19:39
 * @Version 1.0
 */
package com.cn.xiaonuo.modular.wechat.cache;


import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

@Component
public class TokenCache {

    private static LoadingCache<String,String> loadingCache = CacheBuilder
            .newBuilder().initialCapacity(100).maximumSize(100)
            .expireAfterWrite(7000, TimeUnit.SECONDS)
            .build(new CacheLoader<String, String>() {
                @Override
                public String load(String key) throws Exception {

                    return null;
                }

            });


    public static void setKey(String key,String value){
        loadingCache.put(key, value);
    }

    public static String getValue(String key){
        String value = null;

        try{
            value = loadingCache.get(key);
            if(value == null){
                return null;
            }
            return value;

        }catch (Exception e){
            return null;
        }

    }
}

到此這篇關(guān)于springboot整合guava實(shí)現(xiàn)本地緩存的示例代碼的文章就介紹到這了,更多相關(guān)springboot guava本地緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在JAR文件中找不到主清單屬性的原因與解決方案

    在JAR文件中找不到主清單屬性的原因與解決方案

    在Java中,一個(gè)JAR文件通常包含一個(gè)名為MANIFEST.MF的清單文件,這個(gè)文件定義了關(guān)于JAR文件的各種元數(shù)據(jù),然而,有時(shí)我們可能會(huì)遇到一個(gè)問題,那就是在JAR文件中找不到主清單屬性,本文給大家介紹了JAR文件中找不到主清單屬性的原因和解決方案,需要的朋友可以參考下
    2024-04-04
  • java設(shè)計(jì)模式之觀察者模式學(xué)習(xí)

    java設(shè)計(jì)模式之觀察者模式學(xué)習(xí)

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之觀察者模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Intellij IDEA 2020.3 配置教程詳解

    Intellij IDEA 2020.3 配置教程詳解

    這篇文章主要介紹了Intellij IDEA 2020.3 配置教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • java中volatile關(guān)鍵字的作用詳解

    java中volatile關(guān)鍵字的作用詳解

    這篇文章主要介紹了java中volatile關(guān)鍵字的作用詳解,volatile可以保證,若一個(gè)線程改變了某塊內(nèi)存的值,其他線程是可見的,以至于其他線程能及時(shí)更新這塊內(nèi)存,需要的朋友可以參考下
    2023-09-09
  • springboot 使用zookeeper實(shí)現(xiàn)分布式隊(duì)列的基本步驟

    springboot 使用zookeeper實(shí)現(xiàn)分布式隊(duì)列的基本步驟

    這篇文章主要介紹了springboot 使用zookeeper實(shí)現(xiàn)分布式隊(duì)列,通過ZooKeeper的協(xié)調(diào)和同步機(jī)制,多個(gè)應(yīng)用程序可以共享一個(gè)隊(duì)列,并按照先進(jìn)先出的順序處理隊(duì)列中的消息,需要的朋友可以參考下
    2023-08-08
  • Java JDK動(dòng)態(tài)代理的基本原理詳細(xì)介紹

    Java JDK動(dòng)態(tài)代理的基本原理詳細(xì)介紹

    這篇文章主要介紹了Java JDK動(dòng)態(tài)代理的基本原理詳細(xì)介紹的相關(guān)資料,這里對(duì)動(dòng)態(tài)代理進(jìn)行了詳解并附簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下
    2017-01-01
  • springboot項(xiàng)目訪問靜態(tài)資源的配置代碼實(shí)例

    springboot項(xiàng)目訪問靜態(tài)資源的配置代碼實(shí)例

    這篇文章主要介紹了springboot項(xiàng)目訪問靜態(tài)資源的配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Spring Boot異步調(diào)用@Async過程詳解

    Spring Boot異步調(diào)用@Async過程詳解

    這篇文章主要介紹了Spring Boot異步調(diào)用@Async過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • RocketMQ事務(wù)消息圖文示例講解

    RocketMQ事務(wù)消息圖文示例講解

    RocketMQ事務(wù)消息(Transactional Message)是指應(yīng)用本地事務(wù)和發(fā)送消息操作可以被定義到全局事務(wù)中,要么同時(shí)成功,要么同時(shí)失敗。RocketMQ的事務(wù)消息提供類似 X/Open XA 的分布式事務(wù)功能,通過事務(wù)消息能達(dá)到分布式事務(wù)的最終一致
    2022-12-12
  • 詳解如何在SpringBoot中實(shí)現(xiàn)優(yōu)雅關(guān)閉

    詳解如何在SpringBoot中實(shí)現(xiàn)優(yōu)雅關(guān)閉

    這篇文章主要介紹了如何在SpringBoot中實(shí)現(xiàn)優(yōu)雅關(guān)閉,SpringBoot應(yīng)用程序的關(guān)閉可以是崩潰,也可以是手動(dòng)關(guān)閉的,Shutdown、Crash 和 Graceful 之間的區(qū)別在于,它控制決定了我們可以用這個(gè)事件做什么,本文中,一起研究下Spring Boot提供的開箱即用功能之一:優(yōu)雅關(guān)閉
    2024-09-09

最新評(píng)論