是什么让spring 5放弃了使用Guava Cache?

Guava Cache 高性能本地缓存库详解与使用案例 Guava Cache 本地缓存库解析 核心特性 Guava Cache 是 Google 提供的 Java 本地缓存库,支持: 基于大小和时间的缓存驱逐策略 软引用/弱引用内存管理 缓存统计和性能监控 手动刷新与异步加载机制 缓存变更监听功能 典型应用场景 单体应用缓存:减少数据库访问压力 分布式系统二级缓存:与 Redis 配合使用 Spring Boot 集成:通过 Bean 配置快速接入 性能优化建议 设置随机过期时间避免缓存雪崩 监控命中率调整缓存策略 使用软引用优化内存管理 定期清理过期缓存项 阅读详情

一路走来,Spring社区从刚开始的核心模块一直发展到现在,最近Sping5也完成了M5的发布, 相信不久之后第一个RELEASE版本也会发布。里面有很多特性是和即将要发布的JAVA 9息息相关的。今天我们就针对一个比较重要的改变:Spring5即将放弃掉Guava Cache作为缓存机制,而改用Caffeine作为新的本地Cache的组件。

最近几年,相信大家对于Google的开源工具包Guava有大范围的使用,Guava工具包里面又属Cache模块最被人熟知。为什么Spring 5要放弃一个这么优秀的包呢?我想应该最大的原因就是Guava Cache所使用的缓存更新策略的问题。

什么是缓存更新策略呢?我认为这个策略是本地Cache的重中之重,一个好的更新策略和一个不好更新策略,对于本地Cache的性能有很大的差别。我们都知道LRU是一种比较简单并且十分有效的Cache更新策略。Guava Cache正是基于LRU所实现的本地缓存对象。并且能够很好的支持多种淘汰策略(基于对象个数、基于访问频率等等)。

那么为什么这么好的东西需要被淘汰呢, 如果对于本地Cache有过深入研究的人应该知道LRU算法基本可以满足大部分的场景,但是很多人为了精益求精,基于LRU的算法,又在此基础上提出了一系列更好的,更有效果的淘汰策略。比如有 ARC,LIRS 和 W-TinyLFU等都提供了接近最理想的命中率,他们这些算法进一步提高了本地缓存的效率。

Cache的目的就是缓存,如果在功能一样的情况下,最重要的突破就是性能了。从功能上来看Guava Cache已经比较完善了,基本满足了绝大部分本地缓存的需求。那么Spring 5使用Caffeine来代替Guava Cache就是因为性能的问题了。首先我们来看看官方给出来的性能测试对比的报告。

场景1:

8个线程读,100%的读操作

是什么让spring 5放弃了使用Guava Cache?

场景二:

6个线程读,2个线程写,也就是75%的读操作,25%的写操作

是什么让spring 5放弃了使用Guava Cache?

场景三:

8个线程写,100%的写操作

是什么让spring 5放弃了使用Guava Cache?

可以从数据看出来Caffeine的性能都比Guava要好。

然后Caffeine的API的操作功能和Guava是基本保持一致的,并且Caffeine为了兼容之前是Guava的用户,做了一个Guava的Adapter给大家使用也是十分的贴心。

当然Caffeine的调整不只有算法上面的调整,还有内存方面的优化以及一些实用的方法没有覆盖到。不过相信仅仅是上面提到的新特点就会让人们有心动的想法去尝试。

看到这里详细大家也知道为什么Spring 5 会放弃Guava转向Caffeine了吧!

ai获客系统功能代码 AI 获客系统是一个复杂的体系,以下为你提供一个简化的 Python 示例,聚焦于客户行为分析与销售线索筛选功能,模拟实现从多渠道收集数据后的初步处理流程。假设已有从官网、线上商城等渠道收集到的客户数据,以字典列表形式存储,每个字典包含客户基本信息及购买行为数据。通过分析客户购买频率与金额,筛选出高价值销售线索。python上述代码仅为基础示例,实际 AI 获客系统还涉及更复杂的数据采集、清洗、存储,以及运用机器学习算法进行深度客户洞察等功能。 阅读详情

相关推荐

DC-DC 转换器中的压电谐振器:当前状态和限制

在功率转换器应用中,居里温度较低的谐振器的 k 2和 Q M显着降低会导致效率降低,需要仔细的热处理。由于使用 PR 的功率转换器在不同的条件下运行,包括温度范围、电压偏置和功率电平,因此不可避免地会出现非线性效应,必须妥善解决这一问题,以免影响转换器的性能。等效电路模型(Butterworth Van-Dyke 或 BVD 模型)将压电谐振器在其机械谐振附近的电响应转换为一个简单电路,该电路由与由电极形成的输入电容 C 0并联的串联 RLC 动分支组成,见图图 1 还显示了阻抗与频率的关系。

2301_79716471的博客 1296

guava笔记:不止是guava(持续更新)

guava学习笔记教程Optional类 API通过教程查阅,记录实践范例 教程 https://www.yiibai.com/guava https://ifeve.com/google-guava/ Optional类 https://www.yiibai.com/guava/guava_optional_class.html

weixin_38370441的博客 660

保姆级教程:用GlobleLand30数据+GTB3.3软件,一步步搞定MSPA景观格局分析

本文提供GlobleLand30数据结合GTB3.3软件进行MSPA景观格局分析的保姆级教程,涵盖数据预处理、软件操作、结果解读全流程,特别针对零基础用户常见问题提供解决方案,助力研究者高效完成景观生态学分析。

weixin_26757925的博客 450

为什么Caffeine比Guava好?

目录 1.缓存淘汰算法 1.1.FIFO 1.2.LRU 1.3.LFU 2.几种缓存的实现 2.1.原生Java 2.2.Guava 2.3.Caffeine 3.参考资料 1.缓存淘汰算法 1.1.FIFO 先进先出:最先进入的缓存被最先淘汰掉,这个基本不会有人用来做缓存 1.2.LRU 最近最少未使用:每次访问就把这个元素放到队列头部...

Aaron_涛 1万+

ADC INL&DNL测试方法和实例

本文介绍了一种可操作的ADC INL和DNL的测试方法--直方图法(也称码密度法)。并实际使用该方法测试了两款芯片的ADC INL和DNL

APTCHIP的博客 1万+

未来计算的革命:探索存算一体芯片的潜力与挑战

未来计算的革命:探索存算一体芯片的潜力与挑战

jtwqwq的博客 1611

再见,Guava!再见,Ehcache!这才是 Java 本地缓存之王!

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 Elast...

weixin_44421461的博客 187

最近爆火的 Ontology 本体是什么?一文看懂基础概念 + 落地实操

1993 Tom Gruber原版定义:本体是对领域概念化模型的显式形式化规范。1998 Studer完善通用定义:本体是共享、明确、形式化的领域概念模型规范。大白话翻译:本体就是机器能看懂的行业词典+业务规则手册。数据库只管存数据,本体只管定规则,知识图谱是规则+数据结合体。区别于普通开源本体工具,这款国产商用本体平台核心优势:业务沙盘推演、可控业务数据写回、全链路字段级数据血缘审计,适配企业生产级业务落地。

驽马不舍 365

使用Google Guava快乐编程

目前Google Guava在实际应用中非常广泛,本篇博客将以博主对Guava使用的认识以及在项目中的经验来给大家分享!正如标题所言,学习使用Google Guava可以让你快乐编程,写出优雅的JAVA代码!以面向对象思想处理字符串:Joiner/Splitter/CharMatcherJDK提供的String还不够好么?也许还不够友好,至少让我们用起来还不够爽,还得操心!举...

weixin_33842328的博客 720

SpyGlass CDC实战:如何用sgdc约束文件解决跨时钟域报错(附常见错误排查)

本文详细介绍了如何使用SpyGlass CDC工具编写sgdc约束文件解决跨时钟域(CDC)报错问题。从基础语法到实战案例,涵盖时钟声明、复位约束、路径豁免等关键技巧,特别针对SPI断续时钟等特殊场景提供解决方案,并附常见错误排查指南,帮助工程师高效完成CDC验证。

weixin_28744423的博客 625

金融领域强化学习在高频交易中的应用

强化学习(Reinforcement Learning,简称RL)是一种机器学习范式,通过智能体与环境的交互来学习策略,以最大化累计奖励。与监督学习和无监督学习不同,强化学习依赖于动态的反馈机制,智能体通过试错不断优化决策过程。高频交易(High-Frequency Trading,简称HFT)是指在极短时间内进行的大量金融交易,通常利用算法和计算机系统自动执行交易策略。高频交易依赖于高速的数据处理和决策能力,以捕捉市场中的微小价格波动。状态(State):环境在某一时刻的观测,反映了系统的当前情况。

AI天才研究院 889

是什么让 Spring5 放弃了使用 Guava Cache?

来源:https://albenw.github.io/posts/a4ae1aa2/概要Caffeine是一个高性能,高命中率,低内存占用,near optimal 的本地缓存,简单来...

架构师小秘圈 489

微信小程序逆向实战:从HTTPS抓包到API接口全解构

方案原理优点缺点方案一:使用低版本微信+系统代理微信7.0以下版本未强制不走代理操作简单容易被封号,无法使用新版小程序方案二:Hook SSL层(Xposed/Frida)动态Hook Java的TrustManager或系统的SSLContext,绕过证书校验灵活可控需要Root/越狱,技术门槛高方案三:VPN转发抓包(PacketCapture)利用Android VPNService将所有流量转发到本地代理无需Root,兼容性好部分机型存在性能问题。

2201_76125261的博客 266

Spring Boot + Guava Cache缓存应用实战

Guava Cache缓存应用实战 问题背景 实际项目碰到一个上游服务商接口有10秒的查询限制(同个账号)。 项目中有一个需求是要实时统计一些数据,一个应用下可能有多个相同的账号。由于服务商接口的限制,当批量查询时,可能出现同一个账号第一次查询有数据,但第二次查询无数据的情况。 解决方案 基于以上问题,提出用缓存的过期时间来解决。 这时,可用Redis和Guava Cache来...

一大三千的博客 5294

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

springBoot集成guava cache缓存

springBoot集成guava cache本地缓存实现

weixin_42326851的博客 7193

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

spring cache 中guava CacheBuilder的个性实例化

spring cache在4.0以上版本正式对guava cache进行集成,相应的 CacheManager实现类:org.springframework.cache.guava.GuavaCacheManager 要求google guava 12.0 或以上版本.

snoopy 3572

Guava Cache 本地项目缓存

以下是一个简单的配置类,展示如何在 Spring Boot 中定义 Guava Cache。如果希望结合 Spring 的缓存抽象(@Cacheable 等注解),可以创建一个自定义 CacheManager 来使用 Guava Cache。在 Spring Boot 项目中,Guava Cache 是 Google Guava 库的一部分,因此需要添加 Guava 的依赖。将配置好的 Guava Cache 注入到业务逻辑中,并在需要的地方使用缓存。: 请根据需要选择最新版本,检查。

keyboard专栏 1227

Guava Cache探索及spring项目整合GuavaCache实例

背景   对于高频访问但是低频更新的数据我们一般会做缓存,尤其是在并发量比较高的业务里,原始的手段我们可以使用HashMap或者ConcurrentHashMap来存储.   这样没什么毛病,但是会面临一个问题,对于缓存中的数据只有当我们显示的调用remove方法,才会移除某个元素,即便是高频的数据,也会有访问命中率的高低之分,内存总是有限的,我们不可能无限地去增加Map中的数据.   我希...

很多时候犯错都是在不知情的情况下发生的 400

guava缓存的使用及与spring的集成

一、guava缓存简介 guava是google为java开发的库,对jdk进行了扩展。在此我们只介绍guava的缓存。 guava缓存是内存缓存,也就是数据存在内存中的。 二、guava基本使用 1、添加maven依赖 com.google.guava guava 23.0 2、自定义guava工具类 public class GuavaCa

panda-star的博客 4401

Caffeine vs Guava Cache 深度对比:特性、性能与选型实践

摘要:Caffeine作为GuavaCache的现代替代方案,由原Guava核心开发者BenManes打造,在完全兼容Guava API的基础上,通过W-TinyLFU算法和StripedLock并发模型实现性能飞跃。相比GuavaCache的70-80%命中率,Caffeine可达85-95%,吞吐量提升6-7倍(读700万QPS/写300万QPS)。其优势包括:异步非阻塞刷新、更细粒度过期策略、更低内存占用及丰富统计功能。建议新项目直接采用Caffeine,老项目优先迁移,仅在JDK6/7等限制环境下保

weiye2012的博客 908
上一篇: Java 开发必须掌握的线上问题排查命令
下一篇: Linux机器安装pgAdmin教程
java1993666
博客等级 码龄11年 22粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值