jmeter进阶——链接redis

实现原理:添加redis插件,然后通过配置配置Redis Data Set或者使用BeanShell脚本来链接redis,就可以把redis的数据取出来进行参数化使用

一、Redis Data Set插件插件下载

1、下载Plugins Manager JAR文件:https://jmeter-plugins.org/get/ 2、把下载的文件复制到jmeter文件夹下的lib/ext文件(有的话就不用复制了)

3、重新打开jmeter就可以看到插件管理Plugins Manager (选项-Plugins Manager)

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_验证码


或者直接在右上角的图标打开

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_Redis_02


4、通过插件管理安装redis插件

在Available Plugins 搜索redis勾选然后点击右下角的Appil Changes and Restart JMeter 等待结束就可以了

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_redis_03


二、链接redis

方式一、使用配置元件Redis Data Set 链接

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_jmeter_04


设置Redis Data Set详情

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_验证码_05


Redis key:Redis中的key,Redis数据库中列表(有序数据)或集(无序数据)的名称

Variable Names:由数据集导出到测试元素的变量的名称(设置取出来的value存放在哪个变量中)

Delimiter:存储在Redis列表或集合中的行中使用的分隔符(取出的value有多个值时,变量名之间的分隔符)

Date Sources Type:数据源类型,有List、Set两种选择,String、hash、zset类型取不到(在JMeter 3 中RANDOM_REMOVE 对应 List,RANDOM_KEEP 对应 Set)

Timeout for connection in ms:连接超时时间

Recycle data on use:是否循环使用数据

Redis server host:Redis服务器地址

Redis server port:Redis服务器端口

Password for connection:连接Redis的密码

Database:数据库名称,连接Redis的第几个数据库,默认为0

whenExhaustedAction:当Redis连接池被分配时的操作,GROW(自动新建一个实例)、BLOCK(阻塞,超过等待时间后抛出异常)、FAIL(失败,直接抛出异常)key值得获取:

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_Redis_06


后面引用设置的变量即可,变量会把取到的redis数据反馈出来(建议随便用个请求验证一下redis的取值是否正确)

方拾二、使用BeanShell脚本实现全面操作redis

1、先安装redis的插件如上,不过多讲解
2、BeanShell脚本通过jedis操作redis
代码如下

import redis.clients.jedis.Jedis;

import org.apache.commons.lang3.StringUtils;

String host = "${服务器的ip}"; //服务器地址

int port = 6379; //端口号 不要加引号

String password = "${这是redis的链接密码}"; //redis密码

int index = 0; //redis db 用的是哪个redis库

String key = "${key值}"; //key值

Jedis jedis = new Jedis(host, port);

if(StringUtils.isNotBlank(password)){

jedis.auth(password);

}

jedis.select(index);

String redisGetResult = jedis.get(key);

vars.put("${自定义}",redisGetResult); //将key值保存为变量

三、对redis的取值处理

通常取出的redis值都不是我们想要的,或者说我们只需要其中的一部分

此时可以把取值利用接口的方式通过边界值提取器提取出来(推荐这个提取器)

例如

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_验证码_07


这是一个存储验证码的redis存储结果,我们仅仅需要一个验证码

因为上一步已经把redis数据取出来的,我们需要做进一步提取,提取出我们所需要的。

思路:由于验证码前面两串字符串都是变量我们不方便定位可以通过“:”进行提取,这时验证码的左边界是“:”有边界也是“:”,所以我们可以发送一个求情,redis取出的结果做传参,然后提取出我们所需要的验证码;

1、添加一个http请求把redis的取值当做参数

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_验证码_08


然后把请求URL中的验证码尽心提取:添加边界提取器

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_验证码_09


我们不确定此redis的取值是否正确(是否取出)可以在http请求下添加一个断言,判断是否存在:3(发送了验证码之后直接获取,所以:3是不变的)最后我们再新建一个http请求把提取出来的验证码做参数输入查看是否是我们需要的

jmeter怎么写接口向redis缓存中存数据 jmeter redis插件_Redis_10