1.安装redis数据库
docker pull redis
docker run -itd --name jmeter-redis -p 6379:6379 redis redis-server --appendonly yes
进入容器
docker exec -it jmeter-redis /bin/sh
命令模式:
redis-cli
插入列数据:
lpush course jmeter,loadruner
lpush course wrk,ab
lpush course locust,ngrinder
lrange course 0 10
2.jmeter的准备:
由于 jmeter 本身并没有带有 Redis 的测试入口,我们需要去安装 Redis 插件。
首先,我们下载 jmeter-plugins-manager-1.6.jar 文件,放到 jmeter 的 lib 的 ext 文件夹中,然后重启 jmeter。
然后,在‘选项’菜单下,点击‘plugin manager’,打开插件管理弹窗,选择‘Available Plugins’,在搜索框中,输入 Redis
然后,选中‘Redis Data Set’,点击‘Apply Changes and Restart JMeter’
带自动下载后重启 jmeter。
然后,在 jmeter 的线程组上右键,添加 > 配置元件 > jp@gc - Redis Data Set
Data Configuration
Redis key:Redis 中的 key,Redis 数据库中列表(有序数据)或集(无序数据)的名称
Variable Names:由数据集导出到测试元素的变量的名称(设置取出来的 value 存放在哪个变量中)
Delimiter:存储在 Redis 列表或集合中的行中使用的分隔符(取出的 value 有多个值时,变量名之间的分隔符)
Date Sources Type:数据源类型,有 List、Set 两种选择
Recycle data on Flase: 数据是否重复使用
Connection Configuration
Redis server host:Redis 服务器 IP 地址
Redis server port:Redis 服务端口
Timeout for connect in ms: 连接超时时间,默认 2000 ms
Password for connection:连接 Redis 的密码
Database:数据库名称,连接 Redis 的第几个数据库,默认为 0
Redis Pool Configuration
接下来我们添加调试取样器,在名称中引用 Redis 变量名称。然后,线程组循环次数设置多次。
运行结果:
我们看到,获得了 Redis 的数据。
jmeter 向 Redis 中写数据:
在 jmeter 中,新增一个线程组,添加‘jsr223 sampler’
import redis.clients.jedis.Jedis;
Jedis jedis = new Jedis("数据库IP", 6379);
jedis.set("foo","bar6666");
String value = jedis.get("foo");
运行结果:
获取所有的配置
config get *
string字符串
set strkey strvalue get strkey
hash哈希
hmset hashkey field1 “value1” field2 “value2”
hget haskey field1
list列表
lpush lrange
set 集合
sadd smembers
sorted set 有序集合
zadd zrangebyscore
redis穿透、雪崩、击穿:
穿透:
key查不到,去存储层数据库中获取,失去了缓存意义
解决办法:程序层做逻辑检查
雪崩:
redis缓存数据中大量的key在同一时间失效,请求这些key获取不到数据,从而去获取更底层的DB数据库
解决办法:设置key失效时间随机
击穿:
持续长时间大并发请求某一个热点key,在key失效瞬间,就突破了缓存