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

前言

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

正文

  • 添加caffeine和spring cache的pom依赖

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>3.1.5</version> </dependency>
  • 在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<TpsUserEntity> lambdaQueryWrapper = new LambdaQueryWrapper<TpsUserEntity>()
    .eq(TpsUserEntity::getUsername, username);
    return this.getOne(lambdaQueryWrapper);
    }

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

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

结语

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

相关推荐
毋语天10 小时前
Redis 零基础实战指南:从核心原理到生产落地的完整路线
数据库·redis·缓存
それども11 小时前
redis scan和keys对比
数据库·redis·缓存
深蓝轨迹12 小时前
缓存雪崩终极防御:Caffeine + Redis 多级缓存
数据库·redis·缓存·caffine
__zRainy__14 小时前
Redis系列:缓存抽象封装与最佳实践
数据库·redis·缓存
happyprince14 小时前
05-Hugging Face Transformers 缓存系统深度分析
java·spring·缓存
__zRainy__14 小时前
Redis系列:核心数据类型与基础 API 解读
数据库·redis·缓存
dinl_vin18 小时前
FastAPI 系列·(七):Redis 集成——缓存、分布式锁与 Session 管理
redis·缓存·fastapi
姚不倒18 小时前
从「LeetCode LRU 缓存」到「生产级 Go Web 服务」:我如何迈出工程化第一步
leetcode·缓存·云原生·golang
努力努力再努力wz19 小时前
【Redis入门系列】:从 hashtable到 listpack:深入理解 Hash 底层编码、字段级过期、核心命令与缓存应用
开发语言·数据结构·数据库·c++·redis·算法·缓存
止语Lab19 小时前
从 sync.Map 到 Redis:Go 缓存升级的三个拐点
redis·缓存·golang