Guava输了!一个高性能的 Java 本地缓存库,太强了(带私活源码)

本文介绍了高性能Java缓存库Caffeine,强调了其在项目中的优势,如快速读写和多种回收策略。同时提到了Caffeine在Spring5中的地位替换Guava,并展示了如何在Jeepay支付系统中使用Caffeine提高性能。
摘要由CSDN通过智能技术生成

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

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

简介

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

性能比Guava更强

图片

功能特性

  • 基于时间的回收策略:包括写入时间和访问时间

  • 基于容量的回收策略:一种是基于容量大小,一种是基于权重大小,两者只能取其一。

  • 基于数量回收策略

  • 基于引用的回收策略:GC并且内存不足时,会触发软引用回收策略;GC并且内存不足时,会触发软引用回收策略。

  • value自动封装弱引用或软引用

  • 缓存访问统计

使用方式

引入依赖

      <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
        </dependency>

配置缓存类

@Configuration
public 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,支持多种回收策略,感兴趣的小伙伴赶快去试试吧~

写在最后(私活源码)

项目介绍

Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式。已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付。

Jeepay使用Spring Boot和Ant Design Vue开发,集成Spring Security实现权限管理功能,是一套非常实用的web开发框架。

项目特点

· 支持多渠道对接,支付网关自动路由

· 已对接微信服务商和普通商户接口,支持V2和V3接口

· 已对接支付宝服务商和普通商户接口,支持RSA和RSA2签名

· 已对接云闪付服务商接口,可选择多家支付机构

· 提供http形式接口,提供各语言的sdk实现,方便对接

· 接口请求和响应数据采用签名机制,保证交易安全可靠

· 系统安全,支持分布式部署,高并发

· 管理端包括运营平台和商户系统

· 管理平台操作界面简洁、易用

· 支付平台到商户系统的订单通知使用MQ实现,保证了高可用,消息可达

· 支付渠道的接口参数配置界面自动化生成

· 使用spring security实现权限管理

· 前后端分离架构,方便二次开发

· 由原XxPay团队开发,有着多年支付系统开发经验

系统架构

Jeepay计全支付系统架构图

图片

核心技术栈

软件名称

描述

版本

Jdk

Java环境

1.8

Spring Boot

开发框架

2.4.5

Redis

分布式缓存

3.2.8 或 高版本

MySQL

数据库

5.7.X 或 8.0 高版本

MQ

消息中间件

ActiveMQ 或 RabbitMQ 或 RocketMQ

Ant Design Vue

Ant Design的Vue实现,前端开发使用

2.1.2

MyBatis-Plus

MyBatis增强工具

3.4.2

WxJava

微信开发Java SDK

4.1.0

Hutool

Java工具类库

5.6.6

开发部署

· 系统开发:https://docs.jeequan.com/docs/jeepay/dev_serv

· 通道对接:https://docs.jeequan.com/docs/jeepay/dev_channel

· 线上部署:https://docs.jeequan.com/docs/jeepay/deploy

· 接口文档:https://docs.jeequan.com/docs/jeepay/payment_api

功能模块

Jeepay运营平台功能

图片

Jeepay商户系统功能

图片

系统截图

以下截图是从实际已完成功能界面截取

图片

图片

图片

图片

图片

图片

图片

图片

开源地址

扫码关注本号,后台回复 支付

扫码关注本号,后台回复 支付

持续关注本号,分享更多项目源码

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值