Jmeter之Redis讀寫

Jmeter插件訪問Redis共有3種方式:

1)通過自已開發(fā)插件(目前難度有點(diǎn)大碳抄、這種方式一定是OK 的,以后再研究一下)或者使用現(xiàn)有的JmeterRedis插件(目前網(wǎng)上的實(shí)例沒有一個(gè)可以調(diào)通的);

2)通過Beanshell連接、讀竿报、寫Redis數(shù)據(jù)俄删;

3)javaRedis+Beanshell,通過java實(shí)現(xiàn)Redis連接、增点待、刪阔蛉、改、查亦鳞;并打成jar包導(dǎo)入Jmeter擴(kuò)展jar包馍忽,使用BeanShell調(diào)用;

一燕差、 Jmeter訪問Redis data

參考地址:https://www.cnblogs.com/zhangfeivip/p/9450370.html

https://jmeter-plugins.org/wiki/RedisDataSet/

目前網(wǎng)上的實(shí)例還沒有可以調(diào)通過遭笋,先介紹一下使用方法;

二徒探、Jmeter通過BeanShell訪問Redis數(shù)據(jù)庫

參考地址:https://www.cnblogs.com/xiaoxitest/p/10150903.html

2.1? 將以下jar包導(dǎo)入jmeter\lib目錄下

jedis-2.2.1.jar

commons-pool-1.6.jar

注:需要重啟Jmeter才會(huì)生效瓦呼;

2.2 添加線程組->Sampler->BeanShell Sampler,加入以下內(nèi)容

import redis.clients.jedis.Jedis;

importorg.apache.commons.lang3.StringUtils;

//redis服務(wù)器地址

String host = "localhost";

//redis 服務(wù)端口號(hào)

int port = 6379;

//redis密碼

String password = "123456";

//redis db索引默認(rèn)從0開始

int index = 6;

//IFLY表示第一級测暗,STC表示第二央串,TEST表示第三級,一:二:三:四拼為一個(gè)key:

String key ="IFLY:STC:TEST:test";

//value

String value =

"{\"url\":\"https://www.baidu.com\",\"companyName\":\"test\",\"id\":\"007\",\"nickname\":\"test008\",\"id\":\"20180909\"}";

//Jedis獲取到的Redis數(shù)據(jù)在jedis里

Jedis jedis = new Jedis(host, port);

//判斷密碼是否為空,不為空時(shí)校驗(yàn)密碼

if(StringUtils.isNotBlank(password)){

???jedis.auth(password);

?}

?//選擇redis db?指上面的Index

jedis.select(index);???

?//將key與vlue寫入redisdb 插入key, value 指上面key value的值

jedis.set(key, value);

?//獲取key的值

redisData = jedis.get(key);??

//將key的值保存為變量碗啄,傳給jmeter

vars.put("redisData",redisData);???

//將結(jié)果打印到info日志质和;

log.info("========redisData==========:"+redisData);

寫入redis的數(shù)據(jù)

圖為Redis客戶端,對上面代碼的關(guān)鍵字段說明稚字;

三饲宿、 BeanShell引用jar包的方式訪問Redis數(shù)據(jù)庫

參考地址:

https://www.cnblogs.com/youcong/p/8098881.html

https://www.cnblogs.com/edisonfeng/p/3571870.html

3.1 需要將jar包導(dǎo)入java工程

jedis-2.2.1.jar

commons-pool-1.6.jar

3.2 新建一個(gè)RedisUntils類,代碼如下:

/**

*redisdb連接

*@param host 服務(wù)器地址

*@param port 服務(wù)端口

*@parampwd? 密碼

*@return

*/

public staticJedis?connRedisDB(Stringhost,int port,String pwd)throws IOException{

//Jedis獲取到的Redis數(shù)據(jù)在jedis里

Jedisjedis = new Jedis(host,port);

//判斷密碼是否為空胆描,不為空時(shí)校驗(yàn)密碼

if(StringUtils.isNotBlank(pwd)){

jedis.auth(pwd);

System.out.println("Redis服務(wù)連接成功瘫想!");

?}

return jedis;

}

/**

*輸出獲取key與vlue,默認(rèn)是第一個(gè)db

*@param host

*@param port

*@param pwd

*@param str

*@throws IOException

*/

public static void getRedisData(String host,int port,String pwd,String str) throws IOException{

Jedis jedis=connRedisDB(host,port,pwd);

到指定的數(shù)據(jù)庫

jedis.select(dbIndex);

// 獲取數(shù)據(jù)并輸出*表示所有的Key,也可以輸入指定的key

?Setkeys = jedis.keys("*");?

Iteratorit=keys.iterator() ;??

while(it.hasNext()){??

Stringkey = it.next();??

Stringvalue=jedis.get(key);

System.out.println(key+":"+value);??

}

}

/**

*獲取指定DB的key與vlue

*@param host

*@param port

*@param pwd

*@param dbIndex 默認(rèn)從0開始

*@param str 輸入*默認(rèn)為所有的key,輸入XX指所有的key

*@return

*@throws IOException

?*/

public static HashMap<Object, Object> getRedisKeyValue(String host,int port,String pwd,int dbIndex,String str) throws IOException{

Jedis jedis=connRedisDB(host,port,pwd);

//切換到指定的數(shù)據(jù)庫

jedis.select(dbIndex);

Set<String> keys=jedis.keys(str);

HashMap<Object, Object> map=new HashMap<>();

for(String key:keys){

Objectvalue=jedis.get(key);

map.put(key, value);

}

return map;

}

/**

*查詢指定db的key的value

* @param host

*@param port

*@param pwd

*@param dbIndex 默認(rèn)從0開始

*@param str 輸入*默認(rèn)為所有的key,輸入XX指所有的key

?*@return

?*@throwsIOException

?*/

public static String getRedisValue(String host,int port,String pwd,int dbIndex,String str) throws IOException{

Jedis jedis=connRedisDB(host,port,pwd);

jedis.select(dbIndex);

Stringvalue=jedis.get(str);

return value;

}

3.3 build后導(dǎo)出jiar包

第一步:右擊工程,點(diǎn)擊【Export】

java導(dǎo)出jar包

第二步:如上圖昌讲,選擇java>JAR>點(diǎn)擊【Next】

java導(dǎo)出jar包

第三步:如上圖国夜,選擇工程>指定jar包保存路徑>點(diǎn)擊【Finish】;

3.4 將jar包導(dǎo)入Jemeter \lib\ext目錄下;

需要重啟Jmeter;

3.5 添加線程組->Sampler->BeanShell Sampler,輸入如下內(nèi)容:

//導(dǎo)入RedisUntils類

importmain.java.plugins.db.RedisUntils;

//將getRedisValue查詢結(jié)果傳給value 類型為String,getRedisValue("Redis服務(wù)ip",Redis服務(wù)端口,"Redis密碼",指定的數(shù)據(jù)庫默認(rèn)從0開始,"要時(shí)查詢的key");

Stringvalue=RedisUntils.getRedisValue("127.0.0.1",6379,"123456",0,"test");

//輸入info日志

log.info("=====value:======== "+value);

//將vlue put給jmeter后續(xù)接口可以直接調(diào)用

?vars.put("value",value+"");

?執(zhí)行結(jié)果如下:

執(zhí)行結(jié)果

引用查詢結(jié)果

a. 在Sampler短绸、beanShell车吹、斷言中直接用${value}引用

引用value圖1

執(zhí)行結(jié)果如下:

引用value圖2

b. 在beanShell中引用value

//獲取value的值,并給valueText

StringvalueText=vars.get("value");

log.info("=====valueText:======== "+valueText);

//在條件中使用

if(!"123456".equals(vars.get("valueText"))){

//若failure=true為執(zhí)行失敗鸠按,將停止執(zhí)行

Failure = true;

FailureMessage = "寫入RedisDB數(shù)據(jù)錯(cuò)誤礼搁!";

}

斷言
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市目尖,隨后出現(xiàn)的幾起案子馒吴,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饮戳,死亡現(xiàn)場離奇詭異豪治,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扯罐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門负拟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歹河,你說我怎么就攤上這事掩浙。” “怎么了秸歧?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵厨姚,是天一觀的道長。 經(jīng)常有香客問我键菱,道長谬墙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任经备,我火速辦了婚禮拭抬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侵蒙。我一直安慰自己造虎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布纷闺。 她就那樣靜靜地躺著累奈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪急但。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天搞乏,我揣著相機(jī)與錄音波桩,去河邊找鬼。 笑死请敦,一個(gè)胖子當(dāng)著我的面吹牛镐躲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侍筛,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼萤皂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匣椰?” 一聲冷哼從身側(cè)響起裆熙,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后入录,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛤奥,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年僚稿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凡桥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚀同,死狀恐怖缅刽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蠢络,我是刑警寧澤衰猛,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站谢肾,受9級特大地震影響腕侄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芦疏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一冕杠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酸茴,春花似錦分预、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酪穿,卻和暖如春凳干,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背被济。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工救赐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人只磷。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓经磅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钮追。 傳聞我的和親對象是個(gè)殘疾皇子预厌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355