環境配置:(或以上版本,必須)
JDK 版本:1.8
Caffeine 版本:2.8.0
SpringBoot 版本:2.2.2.RELEASE
也可以不與SpringBoot結合
1、添加maven依賴
<dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.8.0</version> </dependency>
2、添加配置類
CacheConfig.java
package com.example.demo.config;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class CacheConfig {
@Bean
public Cache<String, Object> caffeineCache() {
return Caffeine.newBuilder()
// 設置最后一次寫入經過60s過期
.expireAfterWrite(60, TimeUnit.SECONDS)
// 初始的緩存空間大小
.initialCapacity(100)
// 緩存的最大條數
.maximumSize(1000)
.build();
}
}
配置說明
| 參數 | 類型 | 描述 |
|---|---|---|
| initialCapacity | integer | 初始的緩存空間大小 |
| maximumSize | long | 緩存的最大條數 |
| maximumWeight | long | 緩存的最大權重 |
| expireAfterWrite | duration | 最后一次寫入后經過固定時間過期 (與expireAfterAccess 同時存在時,以 expireAfterWrite 為准) |
| expireAfterAccess | duration | 最后一次訪問后經過固定時間過期 (與expireAfterWrite 同時存在時,以 expireAfterWrite 為准) |
| refreshAfterWrite | duration | 創建緩存或者最近一次更新緩存后經過固定的時間間隔,刷新緩存 |
| weakKeys | boolean | 打開 key 的弱引用 |
| weakValues | boolean | 打開 value 的弱引用(與softValues不能同時使用) |
| softValues | boolean | 打開 value 的軟引用 (與weakValues不能同時使用) |
| recordStats | - | 開發統計功能 |
軟引用: 如果一個對象只具有軟引用,則內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存。
弱引用: 弱引用的對象擁有更短暫的生命周期。在垃圾回收器線程掃描它所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存
設置方式如下:
// 軟引用 Caffeine.newBuilder().softValues().build(); // 弱引用 Caffeine.newBuilder().weakKeys().weakValues().build();
3、調用示例
@Autowired Cache<String, Object> caffeineCache; // 加入緩存 caffeineCache.put(key,value); // 先從緩存讀取 caffeineCache.getIfPresent(id); // 從緩存中刪除 caffeineCache.asMap().remove(key);
