背景介紹
問題背景:業務數據中多個字段做唯一性自增,但是相同業務層面的數據希望存在同一張表中,無法使用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包引用或改寫插件的方法實現