用JMeter对使用Guava-BloomFilter的简易项目的性能测试(带github代码)
Jmeter查看QPS和响应时间随着时间的变化曲线(转载)
A component required a bean of type ‘redis. clients. jedis. JedisPool’ that could not be found.
SpringBoot高级篇Redis之Jedis配置
Guava教程-BloomFilter
…
0. github测试代码demo项目
先贴上对应的github项目链接(项目很粗糙)。
这个项目里包括
- docker-compose文件
- JMeter的测试项目jmx文件
- MySQL的sql文件
- 以及Java代码
1. 前言
这里不对Guava进行介绍了,完全不了解的可以网上查查相关的内容。Guava粗糙的理解就是bit版本的hashmap,但仅用于判断XX数据是否存在,并不能用于读取实际对应的数据。
这篇文章主要是自己正好想试试BloomFilter,姑且做下超粗略的测试,记录一下过程。
2. 测试环境
操作系统:MacOS 10.50.7
CPU:2.4GHZ 8核-i9
内存:32GB 2667MHz DDR4
测试工具:JMeter 5.3
数据库:MySQL 8.0.19、Redis 6.0.8
SpringBoot 2.3.4.RELEASE
3. 项目测试大致介绍
-
MySQL简单的一张表,仅含有id和name字段的myuser表,100W条记录的SQL文件,但是不想压榨自己的电脑,实际只用了约1W条数据。(毕竟代码也就测试代码,没有考虑各种高并发优化等策略)
-
比较三种情况的耗时
- 120s内1W线程,初次查询,Redis无缓存
- 120s内1W线程,Redis已有缓存(将近一般数据命中缓存的情况)
- 120s内1W线程,Reids有缓存(近一半),且配有BloomFilter
-
JMeter设置
4. 部分代码
(1)BloomFilter代码
这里让BloomFilter记住数据库的那100W条模拟数据
@Configuration
public class BloomFilterConfig {
@Bean
public BloomFilter<String> bloomFilter(){
BloomFilter<String> bloomFilter = BloomFilter.create(new