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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 中使用Caffeine缓存的简单例子

發(fā)布時間:2024/1/21 javascript 71 coder
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 中使用Caffeine缓存的简单例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Caffeine 緩存是 Java 的高性能緩存庫。本文簡單記錄下 Caffeine 緩存的用法。

依賴配置

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.ben-manes.caffeine</groupId>
        <artifactId>caffeine</artifactId>
    </dependency>
</dependencies>

代碼配置

我們需要初始化 Caffeine 對象以及 Caffeine 緩存管理器。

@Configuration
public class CaffeineConfig {

    @Bean
    public Caffeine<Object, Object> caffeine() {
        return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES);
    }

    @Bean
    public CacheManager cacheManager(Caffeine<Object, Object> caffeine) {
        CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager();
        caffeineCacheManager.setCaffeine(caffeine);
        return caffeineCacheManager;
    }
}

使用緩存

首先,我們創(chuàng)建一個 Service.

@Service
@Slf4j
public class AddressService {

    private static final Map<Long, AddressDTO> ADDRESS_TABLE = new HashMap<>();
    static {
        ADDRESS_TABLE.put(1L, new AddressDTO(1, "廣東"));
        ADDRESS_TABLE.put(2L, new AddressDTO(2, "深圳"));
        ADDRESS_TABLE.put(3L, new AddressDTO(3, "坂田"));
    }

    @Cacheable(value = "address_cache", key = "#addressId")
    public AddressDTO getAddress(long addressId) {
        log.info("AddressService getAddress, addressId: {}", addressId);
        return ADDRESS_TABLE.get(addressId);
    }
}

其次,我們創(chuàng)建一個 Controller.

@RestController
public class CaffeineController {
    @Autowired
    private AddressService addressService;

    @Autowired
    private CacheManager cacheManager;

    @GetMapping("/{addressId}")
    public AddressDTO getAddress(@PathVariable long addressId) {
        return addressService.getAddress(addressId);
    }

    @GetMapping("/cache/{addressId}")
    public AddressDTO findAddressFromCache(@PathVariable long addressId) {
        Cache addressCache = cacheManager.getCache("address_cache");
        if (addressCache != null) {
            return (AddressDTO)addressCache.get(addressId).get();
        }
        return null;
    }
}

然后就可以測試了。我們根據(jù)打印的日志來判斷緩存是否生效了。

總結(jié)

當我們想從緩存中查詢某條數(shù)據(jù)時,可以注入CacheManager,通過緩存名稱來獲取對應(yīng)緩存,再根據(jù)key獲取value。就像findAddressFromCache里那樣。
這只是個簡單例子,實際使用的時候還要多關(guān)注他的配置參數(shù),最基本的就是緩存的過期時間,這樣才能更好的使用它。

總結(jié)

以上是生活随笔為你收集整理的Spring Boot 中使用Caffeine缓存的简单例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。