JMeter连接及操作Redis

 背景介绍

问题背景:业务数据中多个字段做唯一性自增,但是相同业务层面的数据希望存在同一张表中,无法使用Mysql主键自增功能实现。
目前实施:封装redis连接与调用的方法,数据由Redis自增生成。
优 点:利用Redis写入读取内存的优势,保证数据唯一性。
影 响:使用JMeter进行接口自动化或模拟并发时,由Redis自增生成的值无法获取作为接口入参。

以下是使用BeanShell Slamper实现的,具体步骤如下:

一、下载插件

  • 下载Plugins Manager JAR文件:https://jmeter-plugins.org/get/
  • 将文件复制到JMeter的lib/ext目录下

  启动JMeter后可看到刚才添加的插件管理器

  • 通过插件管理器添加redis插件 

  添加后可在ext中看到插件已添加成功

二、抽取Redis连接信息

 

三、添加BeanShell Slamper

import java.util.Map;
import redis.clients.jedis.Jedis;
import org.apache.commons.lang3.StringUtils;
 
String host = "${redis-host}";  //服务器地址
int port = ${redis-port};  //端口号
String password = "${redis-password}";  //redis密码
int index = 6;  //redis db
String key = "${key}";  //key值
String value = "";
 
Jedis jedis = new Jedis(host, port);
if(StringUtils.isNotBlank(password)){
    jedis.auth(password);
    }
 
jedis.select(index);
String get = jedis.incr(key).toString();
//String get = jedis.get(key); 
vars.put("get",get);  //将key值保存为变量

四、添加Debug Slamper确认结果

  与Redis一致

拓展

1.业务数据的唯一编码往往使用时间流水如‘2019030900001’,时间流水可用公共方法生成
2.BeanShell调用略显麻烦,考虑使用JAR包引用或改写插件的方法实现

 

posted @ 2019-04-01 14:55  susanhonly  阅读(2482)  评论(0编辑  收藏  举报