想要进行Redis中的redis-benchmark模块的压力测试,首先需要安装redis

Windows环境

官网:https://redis.io/

推荐使用Linux服务器学习

windows版本的Redis已经停更很久了…

下载地址:https://github.com/dmajkic/redis

1.解压安装包

redis压测hash redis压测连接配置_压力测试


2.开启redis-server.exe

3.启动redis-cli.exe测试

redis压测hash redis压测连接配置_压力测试_02

Linux环境

1.下载安装包!redis-5.0.8.tar.gz

2.解压Redis的安装包!程序一般放在 /opt 目录下

redis压测hash redis压测连接配置_数据库_03

3.基本环境安装

yum install gcc-c++
# 然后进入redis目录下执行
make
# 然后执行
make install

4.redis默认安装路径 /usr/local/bin

5.将redis的配置文件复制到 程序安装目录 /usr/local/bin/myconfig下

redis压测hash redis压测连接配置_压力测试_04

6.redis默认不是后台启动的,需要修改配置文件!将no改为yes

redis压测hash redis压测连接配置_压力测试_05


7.通过制定的配置文件启动redis服务

8.使用redis-cli连接指定的端口号测试,Redis的默认端口6379

redis压测hash redis压测连接配置_redis压测hash_06


9.查看redis进程是否开启

redis压测hash redis压测连接配置_redis_07


10.关闭Redis服务 shutdown

好了,现在我们有了redis环境,就可以进行redis压力测试,我们先来介绍一下~~

redis-benchmark简介

redis-benchmark是官方自带的Redis性能测试工具,用来测试Redis在当前环境下的读写性能。在使用Redis的时候,服务器的硬件配置、网络状况、测试环境都会对Redis的性能有所影响,我们需要对Redis实时测试以确定Redis的实际性能。

  • 语法格式:
redis-benchmark [参数] [参数值]

redis压测hash redis压测连接配置_redis_08


测试:

1. redis启动后进入到bin目录中,执行以下命令进行性能测试:

# 执行测试性能命令
./redis-benchmark -t set,get -n 100000

说明:因为测试的是本机的redis性能,所以没有指定IP和端口号。
-t:表示执行以逗号分隔的命令,执行的是set操作和get操作,如果不指定具体的值,测试的结果较多
执行结果如下:

====== SET ======
  100000 requests completed in 1.31 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

98.64% <= 1 milliseconds
99.85% <= 2 milliseconds
99.99% <= 3 milliseconds
100.00% <= 3 milliseconds
76335.88 requests per second

====== GET ======
  100000 requests completed in 1.26 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

99.27% <= 1 milliseconds
100.00% <= 1 milliseconds
79365.08 requests per second

反馈结果:
SET部分和GET部分,只需要关注最后一句输出即可,以GET为例,上述输出:79365.08 requests per second,表示每秒的GET命令处理79365.08个请求,也就是QPS为7.9W个。
这里的数据都是理想数据,测试出来的QPS不能代表实际生产的处理能力,在实际生产中,服务器的硬件配置、网络状况、测试环境都会对Redis的性能有所影响。

那既然提到了QPS,就来了解一下相关概念~

redis压测hash redis压测连接配置_redis_09


在实际生产中,我们需要关心在应用场景中,redis能够处理的QPS是多少。我们需要估计生产的报文大小,使用benchmark工具指定-d数据块大小来模拟:

./redis-benchmark -t get -n 100000 -c 100 -d 2048

指定并发数为100,数据大小为2048字节,在实际生产中,每个业务处理的数据大小不一致,取出一个最大的数据为基数进行测试即可,在程序里将数据的字节大小打印出来,使用redis-benchmark的-d参数指定数据大小。

执行结果:

====== GET ======
  100000 requests completed in 1.37 seconds
  100 parallel clients
  2048 bytes payload
  keep alive: 1

94.15% <= 1 milliseconds
98.86% <= 2 milliseconds
99.80% <= 3 milliseconds
99.90% <= 4 milliseconds
99.92% <= 5 milliseconds
99.93% <= 6 milliseconds
99.96% <= 7 milliseconds
100.00% <= 8 milliseconds
100.00% <= 8 milliseconds
73206.44 requests per second

使用redis客户端登录到redis服务中,执行info命令查看redis的信息。查看结果,输出的信息较多,查看# Memory下面的一些信息。

# 使用Redis客户端
./redis-cli
# 在客户端中执行info命令
127.0.0.1:6379> info


connected_clients:108 #redis连接数

used_memory:8367424 # Redis 分配的内存总量 
used_memory_human:7.98M
used_memory_rss:11595776 # Redis 分配的内存总量(包括内存碎片) 
used_memory_rss_human:11.06M
used_memory_peak:8367424
used_memory_peak_human:7.98M #Redis所用内存的高峰值
used_memory_peak_perc:100.48%

需要关注used_memory_peak_human(redis已用内存)和used_memory(分配的内存总量),当used_memory_peak_human接近used_memory时就需要注意了。