cache练习记录
cache的基础使用
package cache;
import com.google.common.cache.*;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
public class CacheTest {
@Test
public void Test() {
Instant first = Instant.now();
// 时间间隔
Instant second = Instant.now();
Duration duration = Duration.between(first, second);
Cache<String, String> cache = CacheBuilder.newBuilder()
.maximumSize(1000)
.recordStats() //开启统计信息开关
//访问后过期
.expireAfterAccess(10, TimeUnit.DAYS)
//.expireAfterWrite(10,TimeUnit.DAYS)
//expireAfterWrite(duration)调用的是expireAfterWrite(duration.toNanos(), TimeUnit.NANOSECONDS);
//.expireAfterWrite(duration)
.build(new CacheLoader<String, String>() {
@Override
public String load(String key) throws Exception {
return key + "1";
}
});
//存入
cache.put("word", "Guava Cache");
cache.put("word2", "Guava Cache2");
//存入,和map的putAll一样
Map<String, String> map = new HashMap<>();
cache.putAll(map);
System.out.println(cache.getIfPresent("word"));
//清楚指定值得cache
cache.invalidate("word");
System.out.println(cache.getIfPresent("word"));
System.out.println(cache.getIfPresent("word2"));
//清除所有
cache.invalidateAll();
//清除指定
//cache.invalidateAll(cache.invalidateAll(););
System.out.println(cache.getIfPresent("word2"));
//cache的大小
System.out.println(cache.size()