Caffeine简单的使用
package cache;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.CacheLoader;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.RemovalListener;
import org.junit.Test;
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
public class CaffeineTest {
@Test
public void test1() {
Cache<String, String> cache = Caffeine.newBuilder()
// 数量上限
.maximumSize(1024)
// 表示自从最后一次写入后多久就会过期
.expireAfterWrite(5, TimeUnit.MINUTES)
//表示自从最后一次访问(写入或者读取)后多久就会过期;
.expireAfterAccess(5, TimeUnit.MINUTES)
//自定义过期策略
//.expireAfter()
//指定刷新策略
.refreshAfterWrite(5, TimeUnit.MINUTES)
// 弱引用key
.weakKeys()
// 弱引用value
.weakValues()
//记录下缓存的一些统计数据,例如命中率等
.recordStats()
// 剔除监听
.removalListener((RemovalListener<String, String>) (key, value, cause) ->
System.out.println("key:" + key + ", value:" + value + ", 删除原因:" + cause.toString()))
//刷新策略
.build(new CacheLoader<String, String>() {
@Override
public String load(String k) {
// 这里我们就可以从数据库或者其他地方查询最新的数据
return getValue(k);
}
});
// 将数据放入本地缓存中
cache.put("username", "afei");
cache.put("password", "123456");
// 从本地缓存中取出数据
System<