上海长宁区网站建设,青岛网站制作需要多少钱,网站网站开发的公司,制作网页的素材图片及文字多级缓存
传统的缓存策略一般是请求到达Tomcat后#xff0c;先查询Redis#xff0c;如果未命中则查询数据库#xff0c;存在下面的问题#xff1a;
请求要经过Tomcat处理#xff0c;Tomcat的性能成为整个系统的瓶颈Redis缓存失效时#xff0c;会对数据库产生冲击
Caff…多级缓存
传统的缓存策略一般是请求到达Tomcat后先查询Redis如果未命中则查询数据库存在下面的问题
请求要经过Tomcat处理Tomcat的性能成为整个系统的瓶颈Redis缓存失效时会对数据库产生冲击
Caffeine
进程本地缓存例如HashMap、GuavaCache、Caffeine
优点读取本地内存没有网络开销速度更快缺点存储容量有限、可靠性较低、无法共享场景性能要求较高缓存数据量较小
Caffeine 是一个超强大的高性能本地缓存框架除了基本的缓存功能之外Caffeine 还提供了过期、异步加载、事件通知等功能。
基本API
Test
void testBasicOps() {// 构建cache对象CacheString, String cache Caffeine.newBuilder().build();// 存数据cache.put(gf, 迪丽热巴);// 取数据String gf cache.getIfPresent(gf);System.out.println(gf gf);// 取数据包含两个参数// 参数一缓存的key// 参数二Lambda表达式表达式参数就是缓存的key方法体是查询数据库的逻辑// 优先根据key查询JVM缓存如果未命中则执行参数二的Lambda表达式String defaultGF cache.get(defaultGF, key - {// 根据key去数据库查询数据return 柳岩;});System.out.println(defaultGF defaultGF);
}缓存驱逐策略
Caffeine既然是缓存的一种肯定需要有缓存的清除策略不然的话内存总会有耗尽的时候。
Caffeine提供了三种缓存驱逐策略 基于容量设置缓存的数量上限 // 创建缓存对象
CacheString, String cache Caffeine.newBuilder().maximumSize(1) // 设置缓存大小上限为 1.build();基于时间设置缓存的有效时间 // 创建缓存对象
CacheString, String cache Caffeine.newBuilder()// 设置缓存有效期为 10 秒从最后一次写入开始计时 .expireAfterWrite(Duration.ofSeconds(10)) .build(); 基于引用设置缓存为软引用或弱引用利用GC来回收缓存数据。性能较差不建议使用。 注意在默认情况下当一个缓存元素过期的时候Caffeine不会自动立即将其清理和驱逐。而是在一次读或写操作后或者在空闲时间完成对失效数据的驱逐。