(二)高并发压力测试调优篇——caffeine本地缓存调优

前言

在上一节内容中我们主要介绍了高并发请求下,mysql数据库的调优,其调优的主要原理是尽量减少数据库的IO操作,从而提高服务器的访问性能。在此基础上,本节内容是关于如何利用缓存,提高系统的并发访问能力。我们会首先在项目中集成caffeine本地缓存组件,通过jemeter压测工具验证本地缓存对高并发的影响。

正文

  • 添加caffeine和spring cache的pom依赖

    org.springframework.boot spring-boot-starter-cache com.github.ben-manes.caffeine caffeine 3.1.5
  • 在application.yml中配置caffeine缓存

    spring:
    cache:
    type: caffeine
    caffeine:
    spec: initialCapacity=100,maximumSize=500,expireAfterWrite=5m

  • 使用@EnableCaching注解启用缓存
  • 添加一个本地缓存测试用例

    @Cacheable(cacheNames = "user", key = "#p0")
    @Override
    public TpsUserEntity getUserByUsername(String username) {
    LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper()
    .eq(TpsUserEntity::getUsername, username);
    return this.getOne(lambdaQueryWrapper);
    }

  • 500用户,并发500的压测结果:吞吐量达到18000/sec

  • 500用户,并发1000的压测结果:吞吐量达到19000/sec
  • 500用户,并发2000的压测结果:吞吐量达到22000/sec

结语

由此可见,通过增加内存级的缓存能够大幅度提高接口的并发访问能力,对于高并发访问的接口,我们可以通过使用本地内存或者redis等内存级的数据库,提升接口的并发访问能力。

相关推荐
2601_962071002 小时前
Claude 值不值得用?价格、缓存与 API 接入成本怎么算
人工智能·缓存
天河归来3 小时前
请求原子性实现方式:Redis 互斥与数据库事务协同
数据库·redis·缓存
斯普信专业组4 小时前
Redis RESP3 协议规范:从入门到实战
数据库·redis·缓存
SHENGWEI胜为5 小时前
服务器 IP 地址冲突如何排查?从 DHCP 租约到 ARP 缓存定位故障
服务器·tcp/ip·缓存
Hello_Pyhx5 小时前
SCSKiller v1.3.2 使用流程:从着色器预编译到检查缓存状态
缓存·着色器
microrain16 小时前
SagooIoT 的缓存换后端只改一行配置,文件后端连 Redis 都不需要
物联网·缓存·golang·sagooiot
2601_9689007720 小时前
推理部署配置实践:缓存窗口、硬件配比与协议统一的核查清单
缓存
一条泥憨鱼1 天前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
每天一道题1 天前
Redis 缓存为什么会出问题?穿透、击穿、雪崩与缓存一致性
数据库·redis·缓存
charlotte102410241 天前
Redis 简介:从诞生到数据类型,再到缓存三大问题
数据库·redis·缓存