Spring Boot 中使用Caffeine快取的簡單例子
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 快取管理器。
@Configurationpublic 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; }}
使用快取
首先,我們建立一個 Service.
@Service@Slf4jpublic 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); }}
其次,我們建立一個 Controller.
@RestControllerpublic 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; }}
然後就可以測試了。我們根據列印的日誌來判斷快取是否生效了。
總結
當我們想從快取中查詢某條資料時,可以注入
CacheManager
,透過快取名稱來獲取對應快取,再根據key獲取value。就像
findAddressFromCache
裡那樣。
這只是個簡單例子,實際使用的時候還要多關注他的配置引數,最基本的就是快取的過期時間,這樣才能更好的使用它。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70036623/viewspace-3004587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring Boot:簡單使用EhCache快取框架Spring Boot快取框架
- Caffeine快取的簡單介紹快取
- Caffeine 快取庫快取
- Spring Boot基礎教程:EhCache快取的使用Spring Boot快取
- EVCache快取在 Spring Boot中的實戰快取Spring Boot
- 5、Spring Boot快取Spring Boot快取
- 快取函式的簡單使用快取函式
- Spring Boot Cache Redis快取Spring BootRedis快取
- 最強本地快取Caffeine快取
- 使用EHCACHE三步搞定SPRING BOOT 快取Spring Boot快取
- 基於Spring Cache實現二級快取(Caffeine+Redis)Spring快取Redis
- Spring Boot中使用TestContainer測試快取機制Spring BootAI快取
- spring boot使用Jedis整合Redis實現快取(AOP)Spring BootRedis快取
- Spring boot學習(八)Spring boot配置ehcache快取框架Spring Boot快取框架
- SpringBoot 整合快取效能之王 CaffeineSpring Boot快取
- Spring Boot 2.x基礎教程:EhCache快取的使用Spring Boot快取
- Spring Boot中7種最佳化快取方法Spring Boot快取
- 如何在 Spring Boot 中為快取新增壓縮?Spring Boot快取
- Nginx 快取使用指南-簡單Nginx快取
- mysql查詢快取簡單使用MySql快取
- 在Spring Boot快取API - Code FactorySpring Boot快取API
- Spring Cache + Caffeine的整合與使用Spring
- Spring-Boot專案中配置redis註解快取SpringbootRedis快取
- Spring Boot 之路(一):一個簡單的Spring Boot應用Spring Boot
- 深入解密來自未來的快取-Caffeine解密快取
- 如何處理 Spring Boot 中與快取相關的錯誤?Spring Boot快取
- Guava Cache本地快取在 Spring Boot應用中的實踐Guava快取Spring Boot
- spring 簡單的使用 Hikari連線池 和 jdbc連線mysql 的一個簡單例子SpringJDBCMySql單例
- Spring Boot與Kafka + kafdrop結合使用的簡單示例Spring BootKafka
- Spring Boot 簡單整合 LiquibaseSpring BootUI
- Spring框架系列(2) - Spring簡單例子引入Spring要點Spring框架單例
- Spring Boot 3.2專案中使用快取Cache的正確姿勢!!!Spring Boot快取
- 另一種快取,Spring Boot 整合 Ehcache快取Spring Boot
- Spring Boot + Redis 快取方案深度解讀Spring BootRedis快取
- Java高效能本地快取框架CaffeineJava快取框架
- 手把手教你使用 Spring Boot 3 開發上線一個前後端分離的生產級系統(六) - 本地快取 Caffeine 和 分散式快取 Redis 整合與配置Spring Boot後端快取分散式Redis
- 在Kubernetes上使用Spring Boot實現Hazelcast分散式快取 – PiotrSpring BootAST分散式快取
- Spring Boot 2.x基礎教程:使用EhCache快取叢集Spring Boot快取