分享一个Redis自带的压测工具:redis-benchmark

news2024/10/12 9:28:52

前言

今天给xdm分享一个Redis自带的压测工具:redis-benchmark

介绍

redis-benchmark 是一个用于测试 Redis性能的基准测试工具,可以帮助开发人员评估和比较 Redis 在不同配置或负载情况下的吞吐量和延迟。

使用 redis-benchmark 可以执行多种类型的基准测试,例如:

  • SET/GET 操作测试:通过执行 SET 和 GET 命令来测试 Redis 的读写性能。
  • 并发连接测试:模拟多个并发连接同时执行 Redis 操作,测试 Redis 在高并发环境下的性能表现。
  • 多线程测试:通过在多个线程中执行 Redis 操作来测试 Redis 在多线程环境下的性能表现。
  • 数据大小测试:通过测试不同数据大小的操作来评估 Redis 在处理不同数据量时的性能表现。

redis-benchmark 提供了丰富的配置选项,可以控制并发连接数、数据大小、执行命令的类型等。测试结果包括每秒执行的命令数、平均延迟等指标,可以帮助开发人员优化 Redis 配置和应用程序设计,获得更好的性能。

示例

1、启用100个并发,发100000个请求。

redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000

  • -h 127.0.0.1:指定 Redis 服务器的主机地址为 127.0.0.1,即本地主机。
  • -p 6379:指定 Redis 服务器的端口号为 6379,默认情况下 Redis 使用 6379 端口。
  • -c 100:指定并发连接数为 100,即同时并发地执行操作。
  • -n 100000:指定执行操作的总次数为 100,000 次。

image

如图所示,1.27秒就完成了100000次请求,每秒78802的吞吐量,说明Redis本身的性能就非常好。

这是最常用的命令,可以评估 Redis 在指定条件下的并发处理能力和性能表现。


2、指定主机地址、端口号和数据库编号测试Redis实例的性能

redis-benchmark -h 127.0.0.1 -p 6379 -q -d 100

  • -h 127.0.0.1:指定 Redis 服务器的主机地址为 127.0.0.1,即本地主机。
  • -p 6379:指定 Redis 服务器的端口号为 6379,默认情况下 Redis 使用 6379 端口。
  • -q:指定以静默模式运行基准测试,只输出总结结果,不显示每个操作的详细信息。
  • -d 100:指定要测试的数据库编号为 100。默认情况下 Redis 使用 0 号数据库。

image

如图所示,每秒的qps是7万多,性能很高。


3、执行100,000次测试 SET 和 LPUSH 命令的性能

redis-benchmark -t set,lpush -q -n 100000

image


4、执行100,000次测试Lua脚本的性能

redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"

  • -t set,lpush:指定要执行的命令类型。在本例中,将同时执行 SET 和 LPUSH 命令,即将键值对设置到 Redis 中,并将元素推入列表。
  • -q:指定以静默模式运行基准测试,只输出总结结果,不显示每个操作的详细信息。
  • -n 100000:指定执行操作的总次数为 100,000 次。
  • -n 100000:指定执行操作的总次数为 100,000 次。在本例中,将执行 100,000 次 script load 命令。
  • -q:指定以静默模式运行基准测试,只输出总结结果,不显示每个操作的详细信息。
  • script load "redis.call('set','foo','bar')":指定要执行的命令内容。在本例中,将执行 script load 命令,并将 Lua 脚本作为参数传递给该命令。脚本内容是 redis.call('set','foo','bar'),表示在 Redis 中执行 SET 命令来设置键名为 foo、值为 bar 的键值对。

image

总结

通过 redis-benchmark 的测试结果,你可以获得qps、平均延迟、错误率等性能指标,从而根据需要进行调优和优化,确保Redis在实际生产环境中具有良好的性能和可靠性。

好了,今天的小知识你学会了吗?


如果喜欢,请点赞+关注↓↓↓,持续分享干货哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1108925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将几个模型合并成一个

1、什么时候需要合并模型? 组装和装配:当你需要将多个零件或组件组装成一个整体时,可以合并它们成为一个模型。例如,在制造业中,当需要设计和展示一个完整的机械装置或产品时,可以将各个零部件合并成一个模…

从黑客帝国到元宇宙,“数字身份”之船终将驶向何方?

1999年第一部《黑客帝国》在北美上映,当时正值千禧年初,在这个互联网并未全民普及的年代,《黑客帝国》超前地抛出在蓝、红药丸(即虚幻与真实)之间作选择的经典问题,表达人类与互联网之间的虚实关系&#xf…

c 语言基础:L1-044 稳赢

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个…

对传感器采样数据的低通滤波

低通滤波(Low-pass filter) 是一种过滤方式,规则为低频信号能正常通过,而超过设定临界值的高频信号则被阻隔、减弱。 一阶低通数字滤波器 滤波系数a越小,滤波结果越平稳,但是灵敏度低;滤波系数a越大,滤波结…

LeetCode算法刷题(python) Day43|09动态规划|343. 整数拆分、96.不同的二叉搜索树

目录 LeetCode 343. 整数拆分LeetCode 96.不同的二叉搜索树 LeetCode 343. 整数拆分 力扣题目链接 正整数n,先拆成两个数i, n-i,拆成多个数可以对n-i进行拆分,然后对这些求最大值。 确定dp数组以及下标的含义:对i进行拆分的最大…

ch552g下载时遇到的可能问题

第一次出现的问题 首先确定,vcc和v33,示例芯片中的是15和16引脚都并联了去耦电容。 烧录一般使用上面的两个软件。第一次出现的问题,当没有打开这两个烧录软件时,连接usb数据线后电脑循环出现识别和断开的情况。当打开软件后就能…

通讯网关软件028——利用CommGate X2Modbus实现Modbus RTU访问PI服务器

本文介绍利用CommGate X2Modbus实现Modbus RTU访问PI数据库。CommGate X2MODBUS是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现上位机通过Modbus RTU来获取PI数据库的数据。 【解决方案…

计算机算法分析与设计(12)---贪心算法(最优装载问题和哈夫曼编码问题)

文章目录 一、最优装载问题1.1 问题表述1.2 代码编写 二、哈夫曼编码2.1 哈夫曼编码概述2.2 前缀码2.3 问题描述2.4 代码思路2.5 代码编写 一、最优装载问题 1.1 问题表述 1. 有一批集装箱要装上一艘载重量为 c c c 的轮船,已知集装箱 i ( 1 ≤ i ≤ n ) i(1≤i≤…

神经网络中的反向传播:综合指南

塔曼纳 一、说明 反向传播是人工神经网络 (ANN) 中用于训练深度学习模型的流行算法。它是一种监督学习技术,用于调整网络中神经元的权重,以最小化预测输出和实际输出之间的误差。 在神经网络中,反向传播是计算损失函数…

纳米软件科普|半导体常见的测试种类详解

纳米软件科普下半导体几种常见的测试方法种类的详细介绍,有你不了解的吗? 外观检测:这一步骤主要是对半导体外观质量的评估。它包括检查芯片的平整度、颜色、镜面度等,以确保半导体表面无明显缺陷或不规则形状。 电性能测试&…

Kafka 使用java实现,快速入门

一、kafka的生产者和消费者 1. 生产者发送消息的流程 2. 消费者接收消息的流程 二、 java 代码实现 1. 添加依赖&#xff1a; <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka_2.12</artifactId></dependency>2. 实现…

vue3+koa+axios实现前后端通信

vue3koaaxios实现前后端通信 写了一个小demo来实现前后端通信,涉及跨域问题&#xff0c;非常简单可以给大家平时开发的时候参考 服务端&#xff1a; 目录结构如下&#xff1a; router index.js // router的入口文件 // 引入路由 const Router require("koa-router&quo…

React组件渲染和更新的过程

一、回顾Vue组件渲染和更新的过程 二、回顾JSX本质和vdom 三、组件渲染和更新 1、组件渲染过程 props state (组件有了props state)render()生成vnodepatch(elem, vnode) 2、组件更新过程 setState(newState) --> dirtyComponents (可能有子组件)render()生成newVnodepa…

3、Flowable任务分配和流程变量

任务分配和流程变量 1.任务分配 1.1 固定分配 固定分配就是我们前面介绍的&#xff0c;在绘制流程图或者直接在流程文件中通过Assignee来指定的方式 1.2 表达式分配 Flowable使用UEL进行表达式解析。UEL代表Unified Expression Language&#xff0c;是EE6规范的一部分.Flo…

通配符SSL证书价格贵吗

通配符SSL证书是一种SSL证书&#xff0c;用于保护基于相同域名但具有不同子域名的多个网站。 它使用通配符字符 "*" 来代表所有可能的二级子域名。JoySSL注册码230609领取免费使用通配符证书 通配符SSL证书的作用是使您可以使用单个证书来保护主域名和所有其下的子域…

千兆光模块和万兆光模块的区别?

在网络通信领域&#xff0c;千兆光模块和万兆光模块是最为常见且广泛应用的两种光模块。不同之处在于传输速率、封装、传输距离、功耗、发射光功率、接收光功率和应用场景等。 千兆光模块的传输速率为1 Gbps&#xff0c;万兆光模块的传输速率为10 Gbps&#xff0c;这意味着万…

柯桥基础俄语口语|初级俄语学习:用联想法学习字母

初级俄语 用联想法学习字母 开始学习俄语的时候&#xff0c;第一任务就是掌握字母表。今天彼得俄语会帮助大家巧记俄语字母表。为此&#xff0c;小编把所有字母分成三组&#xff1a;与拼音相似的&#xff0c;可以用图片记住的以及可以用汉字记住的。 与拼音相似的字母 俄语有3…

数据结构与算法-(9)---双端队列(Deque)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

TCP通信-同时接受多个客户端消息

同时处理多个客户端消息的原理 代码实现 public class ClientDemo1 {public static void main(String[] args) {try {System.out.println("客户端启动");// 1、创建Socket通信管道请求有服务端的连接// public Socket(String host, int port)// 参数一&#xff1a;服…

图像处理软件Photoshop 2023 mac新增功能 ps 2023中文版

​Photoshop 2023 mac是一款功能强大、易用且灵活的图像编辑软件&#xff0c;旨在满足专业设计师和摄影师的需求。无论您是处理照片、制作图形还是进行艺术创作&#xff0c;Photoshop 2023 都能为您提供丰富的工具和效果&#xff0c;帮助您实现创意想法。Photoshop还支持多种文…