百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

看看 Jmeter 是如何玩转 redis 数据库的

mhr18 2024-11-11 12:03 13 浏览 0 评论

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 数据库。

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

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

  # 进入容器
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’

  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 写入数据和获取数据的方法都讲了,你学会了吗?

相关推荐

Spring Boot3 连接 Redis 竟有这么多实用方式

各位互联网大厂的后端开发精英们,在日常开发中,想必大家都面临过系统性能优化的挑战。当系统数据量逐渐增大、并发请求不断增多时,如何提升系统的响应速度和稳定性,成为了我们必须攻克的难题。而Redis,这...

隧道 ssh -L 命令总结 和 windows端口转发配置

摘要:隧道ssh-L命令总结和windows端口转发配置关键词:隧道、ssh-L、端口转发、网络映射整体说明最近在项目中,因为内网的安全密级比较高,只能有一台机器连接内网数据库,推送...

火爆BOOS直聘的13个大厂Java社招面经(5年经验)助你狂拿offer

火爆BOOS直聘的13个大厂Java社招面经(5年经验)助你狂拿offer综上所述,面试遇到的所有问题,整理成了一份文档,希望大家能够喜欢!!Java面试题分享(Java中高级核心知识全面解析)一、J...

「第五期」游服务器一二三面 秋招 米哈游

一面下午2点,35分钟golang内存模型golang并发模型golanggc原理过程channel用途,原理redis数据结构,底层实现跳跃表查询插入复杂度进程,线程,协程kill原理除了kil...

RMQ——支持合并和优先级的消息队列

业务背景在一个项目中需要实现一个功能,商品价格发生变化时将商品价格打印在商品主图上面,那么需要在价格发生变动的时候触发合成一张带价格的图片,每一次触发合图时计算价格都是获取当前最新的价格。上游价格变化...

Redis 中的 zset 为什么要用跳跃表,而不是B+ Tree 呢?

Redis中的有序集合使用的是一种叫做跳跃表(SkipList)的数据结构来实现,而不是使用B+Tree。本文将介绍为什么Redis中使用跳跃表来实现有序集合,而不是B+Tree,并且探讨跳跃表...

一文让你彻底搞懂 WebSocket 的原理

作者:木木匠转发链接:https://juejin.im/post/5c693a4f51882561fb1db0ff一、概述上一篇文章《图文深入http三次握手核心问题【思维导图】》我们分析了简单的一...

Redis与Java整合的最佳实践

Redis与Java整合的最佳实践在这个数字化时代,数据处理速度决定了企业的竞争力。Redis作为一款高性能的内存数据库,以其卓越的速度和丰富的数据结构,成为Java开发者的重要伙伴。本文将带你深入了...

Docker与Redis:轻松部署和管理你的Redis实例

在高速发展的云计算时代,应用程序的部署和管理变得越来越复杂。面对各种操作系统、依赖库和环境差异,开发者常常陷入“在我机器上能跑”的泥潭。然而,容器化技术的兴起,尤其是Docker的普及,彻底改变了这一...

Java开发中的缓存策略:让程序飞得更快

Java开发中的缓存策略:让程序飞得更快缓存是什么?首先,让我们来聊聊什么是缓存。简单来说,缓存是一种存储机制,它将数据保存在更快速的存储介质中,以便后续使用时能够更快地访问。比如,当你打开一个网页时...

国庆临近,字节后端开发3+4面,终于拿到秋招第一个offer

字节跳动,先面了data部门,3面技术面之后hr说需要实习转正,拒绝,之后另一个部门捞起,四面技术面,已oc分享面经,希望对大家有所帮助,秋招顺利在文末分享了我为金九银十准备的备战资源库,包含了源码笔...

“快”就一个字!Redis凭什么能让你的APP快到飞起?

咱们今天就来聊一个字——“快”!在这个信息爆炸、耐心越来越稀缺的时代,谁不希望自己手机里的APP点一下“嗖”就打开,刷一下“唰”就更新?谁要是敢让咱用户盯着个小圈圈干等,那简直就是在“劝退”!而说到让...

双十一秒杀,为何总能抢到?Redis功不可没!

一年一度的双十一“剁手节”,那场面,简直比春运抢票还刺激!零点的钟声一敲响,亿万个手指头在屏幕上疯狂戳戳戳,眼睛瞪得像铜铃,就为了抢到那个心心念念的半价商品、限量版宝贝。你有没有发现一个奇怪的现象?明...

后端开发必看!为什么说Redis是天然的幂等性?

你在做后端开发的时候,有没有遇到过这样的困扰:高并发场景下,同一个操作重复执行多次,导致数据混乱、业务逻辑出错?别担心,很多同行都踩过这个坑。某电商平台就曾因订单创建接口在高并发时不具备幂等性,用户多...

开发一个app需要哪些技术和工具

APP开发需要一系列技术和工具的支持,以下是对这些技术的清晰归纳和分点表示:一、前端开发技术HTML用于构建页面结构。CSS用于样式设计和布局。JavaScript用于页面交互和逻辑处理。React...

取消回复欢迎 发表评论: