cache = CacheBuilder.newBuilder()
.recordStats()
.maximumSize(5000000)
.expireAfterWrite(1, TimeUnit.MINUTES)
.build(
new CacheLoader() {
@Override
public Integer load(String key) throws Exception {
//僞代碼:
//查詢資料庫并傳回existFlag
//return existFlag;
//資料庫中查詢不到,傳回null
return null;
}
}
);
}
```
#### 手動加載緩存方式
代碼示例:
```java
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
@Component
public class VehicleNumCache {
private static Logger logger = LoggerFactory.getLogger(VehicleNumCache.class);
private final Integer existFlag = new Integer(1);
private Cachecache = CacheBuilder.newBuilder()
.recordStats()
.maximumSize(5000000)
.expireAfterWrite(1, TimeUnit.MINUTES)
.build();
public Integer get(String vehicleNum){
logger.info(cache.stats().toString());
return cache.getIfPresent(vehicleNum);
}
public void put(String vehicleNum){
cache.put(vehicleNum,existFlag);
}
}
```
#### 如何調用
代碼示例:
```java
Integer flag = vehicleNumCache.get(vehicleNum);
//緩存不存在
if(flag == null){
filterVehicleList.add(v);
}
```
調用前記得注入緩存類vehicleNumCache