2021-08-31 20:06420

Jmeter 作为当前非常受欢迎的接口测试和性能测试的工具,在企业中得到非常广泛的使用,而 Redis 作为缓存数据库,也在企业中得到普遍使用,那如何使用 jmeter 来测试 Redis 数据库呢?今天我们就来讲一讲怎么使用 jmeter 来调用 Redis。

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

此时,已经可以通过 jmeter 配置连接 Redis 数据库了。如果你已经有了 Redis 数据库,那你就直接可以在当前的界面中进行相关的配置,如果你还没有 Redis 数据库,就需要安装 Redis 数据库。

安装 Redis 数据库

安装 Redis 数据库的方法很多,那使用 docker 方式的安装,可能是最简单的,下面我就用 docker 的方式来安装 Redis 数据库。

 
lua

复制代码
  docker run -itd --name jmeter-redis \
-p 6779:6379 \
daocloud.io/library/redis:3.2.8-alpine redis-server --appendonly yes

好了,现在有了 Redis 数据库,该往数据库里面插入一些数据了。

 
bash

复制代码
  # 进入容器
docker exec -it jmeter-redis /bin/sh # 命令模式,连接redis
redis-cli # 插入列表数据
lpush course jmeter,loadruner
lpush course wrk,ab
lpush course locust,ngrinder

现在,Redis 数据库库中,已经有了一个列表 course,我们可以在 jmeter 中,获取它的数据。

jmeter 使用 Redis 数据

在 RedisDataSet 中配置相关信息

  • 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

字段

用法

默认值

minIdle

至少有多少个处于空闲状态的 Redis 实例

0

maxIdle

一个线程池最多有多少个处于空闲状态的 Redis 实例

10

maxActive

控制一个 pool 可分配多少个 Redis 实例,通过 pool.getResource()来获取;如果赋值为-1,则表示不限制;如果 pool 已经分配了 maxActive 个 jedis 实例,则此时 pool 的状态就成 exhausted

20

maxWait

表示当 borrow 一个 Redis 实例时,最大的等待时间,如果超过等待时间,则直接抛出 JedisConnectionException

30000

whenExhaustedAction

表示当 pool 中的 Redis 实例都被 allocated 完时,pool 要采取的操作;默认有三种 WHEN_EXHAUSTED_FAIL(表示无 Redis 实例时,直接抛出 NoSuchElementException)、WHEN_EXHAUSTED_BLOCK(则表示阻塞住,或者达到 maxWait 时抛出 JedisConnectionException)、WHEN_EXHAUSTED_GROW(则表示新建一个 jedis 实例,也就说设置的 maxActive 无用)

GROW

testOnBorrow

在 borrow 一个 Redis 实例时,是否提前进行 alidate 操作;如果为 true,则得到的 Redis 实例均是可用的

False

testOnReturn

在 return 给 pool 时,是否提前进行 validate 操作

False

testWhileIdle

如果为 true,表示有一个 idle object evitor 线程对 idle object 进行扫描,如果 validate 失败,此 object 会被从 pool 中 drop 掉;这一项只有在
timeBetweenEvictionRunsMillis 大于 0 时才有意义

False

timeBetweenEvictionRunsMillis

表示 idle object evitor 两次扫描之间要 sleep 的毫秒数

30000

numTestsPerEvictionRun

表示 idle object evitor 每次扫描的最多的对象数

0

minEvictableIdleTimeMillis

表示一个对象至少停留在 idle 状态的最短时间,然后才能被 idle object evitor 扫描并驱逐;这一项只有在
timeBetweenEvictionRunsMillis 大于 0 时才有意义

60000

softMinEvictableIdleTimeMillis


minEvictableIdleTimeMillis 基础上,加入了至少 minIdle 个对象已经在 pool 里面了。如果为-1,evicted 不会根据 idle time 驱逐任何对象。如果 minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在 timeBetweenEvictionRunsMillis 大于 0 时才有意义

60000

接下来我们添加调试取样器,在名称中引用 Redis 变量名称。然后,线程组循环次数设置多次。

运行

我们看到,获得了 Redis 的数据。

jmeter 向 Redis 中写数据

上面呢,我们已经有讲到了,怎么来获取 Redis 数据库里面的数据?那接下来呢,我们给大家讲一下如何向 Redis 数据库里面写入数据。

首先,我们下载 jedis 的 jar 包, 把下载的包,放入 jmeter 的 lib 文件夹下,重启 jmeter

然后,在 jmeter 中,新增一个线程组,添加‘jsr223 sampler’

 
ini

复制代码
  import redis.clients.jedis.Jedis;

Jedis jedis = new Jedis("81.69.228.171", 6679);
jedis.set("foo","bar");
String value = jedis.get("foo");

运行脚本

从 Redis 数据库中确认,数据已经入库《测试面试宝典》

好了,通过 jmeter 写入数据和获取数据的方法都讲了,你学会了吗?

[转帖]看看 Jmeter 是如何玩转 redis 数据库的的更多相关文章

  1. powershell玩转sqlite数据库

    脚本经常需要处理文本,有时候是行列整齐文本.那么powershell脚本处理行列文本有几种方法呢?一种是excel,另外的一些是?access?sqlite? sqlite是一个很小巧的,很方便嵌入到 ...

  2. .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐

    作者:依乐祝 原本链接:https://www.cnblogs.com/yilezhu/p/9947905.html 引子 为什么写这篇文章呢?因为.NET Core的生态越来越好了!之前玩转.net ...

  3. [翻译] C# 8.0 新特性 Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南) 【由浅至深】redis 实现发布订阅的几种方式 .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐

    [翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容 ...

  4. 支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)

    Redis作为一款性能优异的内存数据库,支撑着微博亿级社交平台,也成为很多互联网公司的标配.这里将以Redis Cluster集群为核心,基于最新的Redis5版本,从原理再到实战,玩转Redis集群 ...

  5. 支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)

    上篇文章<支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)>介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建.配置,运维.扩容等具体操作 集群搭建 ...

  6. 15天玩转redis —— 第九篇 发布/订阅模式

    本系列已经过半了,这一篇我们来看看redis好玩的发布订阅模式,其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子 就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果 ...

  7. 15天玩转redis —— 第八篇 你不得不会的事务玩法

    我们都知道redis追求的是简单,快速,高效,在这种情况下也就拒绝了支持window平台,学sqlserver的时候,我们知道事务还算是个比较复杂的东西, 所以这吊毛要是照搬到redis中去,理所当然 ...

  8. 15天玩转redis —— 第一篇 开始入手

    双十一终于还是过去了,我负责的mongodb由于做了副本集,最终还是挺过去了,同事负责的redis,还是遗憾的在早上8点左右宕机了,然后大家就是马不停 蹄的赶往公司解决问题,因为我对redis也不是很 ...

  9. jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

  10. Jmeter—8 连接microsoft sql server数据库取数据

    本文以Jmeter 连接microsoft sql server为例. 1 从微软官网下载Microsoft SQL Server JDBC Driver 地址:http://www.microsof ...

随机推荐

  1. 如何从零开始实现TDOA技术的 UWB 精确定位系统(4)

    这是一个系列文章<如何从零开始实现TDOA技术的 UWB 精确定位系统>第4部分. 重要提示(劝退说明): Q:做这个定位系统需要基础么?A:文章不是写给小白看的,需要有电子技术和软件编程 ...

  2. 直接在*.vue文件(SFC)中使用JSX/TSX渲染函数,真香!

    前言 在日常开发中vue的模版语法在大多数情况都能够满足我们的需求,但是在一些复杂的业务场景中使用模版语法就有些麻烦了.这个时候灵活的JSX/TSX渲染函数就能派上用场了,大多数同学的做法都是将*.v ...

  3. GetView介绍 以及 GetxController生命周期

    etView 只是对已注册的 Controller 有一个名为 controller 的getter的 const Stateless 的 Widget,如果我们只有单个控制器作为依赖项,那我们就可以 ...

  4. KubeFlow-Pipeline及Argo实现原理速析

    Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序.Argo Workflow流程引擎,可以编排容器流程来执行业务逻辑,在20年4月8日进入CNCF孵化器组. 而Kub ...

  5. 带你用VUE实现上传图片效果

    摘要:在逛b站时看到一个上传图片的效果,想着可以自己也做一个,因为原作者是用原生js写的,那我不如就用vue写好了,当然,是一个很小的东西,在HTML文件直接引用vue就好了,详细步骤如下~ 本文分享 ...

  6. 如何在跨平台的环境中创建可以跨平台的后台服务,它就是 Worker Service。

    一.简介 最近,有一个项目要使用 Windows 服务,来做为一个软件项目的载体.我想了想,都已经到了跨平台的时代了,会不会有替换 Windows 服务的技术出现呢?于是,在网络上疯狂的搜索了一番,真 ...

  7. Grafana-安装饼状图

    官网:https://grafana.com/grafana/plugins/grafana-piechart-panel/?tab=installation 使用grafana-cli直接安装 [r ...

  8. OS | 读者写者问题(读者优先,写者优先 ,读写公平)

    读者优先 读者优先的解决方案: 互斥信号量 wrt,初值是 \(1\),代表一个共享文件,解决 "读-写"互斥,"写-写"互斥. 一个记数器,即整型变量 rea ...

  9. shardingsphere 5.1.1 分库分表

    1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...

  10. 运行vue项目时报错“ValidationError: Progress Plugin Invalid Options”

    https://blog.csdn.net/M_Nobody/article/details/123135041?spm=1001.2101.3001.6650.1&utm_medium=di ...