Java本地缓存,完胜 Guava !

发布时间:2025-05-20 02:57:49 作者:益华网络 来源:undefined 浏览量(0) 点赞(0)
摘要:来源:开源小分队大家好,我是爱学习的了不起! 在项目中用到的除了分布式缓存,还有本地缓存,例如:Guava、Encache,使用本地缓存能够很大程度上提升程序性能,本地缓存是直接从本地内存中读取,没有网络开销。 今天给大家介绍一个高性能

来源:开源小分队

大家好,我是爱学习的了不起!

在项目中用到的除了分布式缓存,还有本地缓存,例如:Guava、Encache,使用本地缓存能够很大程度上提升程序性能,本地缓存是直接从本地内存中读取,没有网络开销。

今天给大家介绍一个高性能的 Java 缓存库 -- Caffeine 。

简介

Caffeine是基于Java8 的高性能缓存库,借鉴了 Guava 和 ConcurrentLinkedHashMap 的设计经验,拥有更高的缓存命中率和更快的读写速度。

性能比Guava更强

功能特性

基于时间的回收策略:包括写入时间和访问时间基于容量的回收策略:一种是基于容量大小,一种是基于权重大小,两者只能取其一。基于数量回收策略基于引用的回收策略:GC并且内存不足时,会触发软引用回收策略;GC并且内存不足时,会触发软引用回收策略。value自动封装弱引用或软引用缓存访问统计

使用方式

引入依赖

            com.github.ben-manes.caffeine

            caffeine

配置缓存类

@Configurationpublic class CacheConfig 

{

    @Bean    public Cache<String, Object> caffeineCache() 

{

        return

 Caffeine.newBuilder()

                // 设置了1分钟的写过期                .expireAfterWrite(60

, TimeUnit.SECONDS)

                // 初始的缓存空间大小                .initialCapacity(100

)

                // 缓存的最大条数                .maximumSize(1000

)

                .build();

    }

}

这种方式的弊端是所有的缓存都放在一起,最好的使用方式是每一个缓存单独创建缓存对象。

使用缓存

    public User getOne(Wrapper<User> queryWrapper, boolean throwEx) 

{

        //查询缓存        Object obj = caffeineCache.getIfPresent("1"

);

        User user = null

;

        if

(Objects.isNull(obj)){

            System.out.println("查询db"

);

            user = getById(1

);

            //加载到缓存中            caffeineCache.put("1"

,user);

        }else

 {

            user = (User) obj;

        }

        return

 user;

    }

总结

Caffeine 是当前优秀的内存缓存框架,无论读还是写的效率都远高于其他缓存,从 Spring5 开始的默认缓存实现就将 Caffeine 代替原来的Google Guava,支持多种回收策略,感兴趣的小伙伴赶快去试试吧

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!