Redis(二十一):Redis性能测试 您所在的位置:网站首页 redis可以做什么 Redis(二十一):Redis性能测试

Redis(二十一):Redis性能测试

2023-03-31 16:27| 来源: 网络整理| 查看: 265

1. redis-benchmark的使用

2. memtier_benchmark的使用

3. python脚本对redis进行测试

1. redis-benchmark的使用

    通常我们开发完一个系统之后,如何验证这个系统的好坏呢,这就需要做性能测试,Redis也不例外。幸运的是,Redis源码中已经提供了测试工具redis-benchmark,当我们从源码中编译完成Redis之后,就可以使用redis-benchmark对Redis进行性能测试。

    redis-benchmard的使用语法如下:

redis-benchmark [option] [option value]

  可选参数如下所示: 

序号 选项 描述 默认值 1 -h 指定服务器主机名 127.0.0.1 2 -p 指定服务器端口 6379 3 -s 指定服务器 socket 4 -c 指定并发连接数 50 5 -n 指定请求数 10000 6 -d 以字节的形式指定 SET/GET 值的数据大小 2 7 -k 1=keep alive 0=reconnect 1 8 -r SET/GET/INCR 使用随机 key, SADD 使用随机值 9 -P 通过管道传输 请求 1 10 -q 强制退出 redis。仅显示 query/sec 值 11 --csv 以 CSV 格式输出 12 -l(L 的小写字母) 生成循环,永久执行测试 13 -t 仅运行以逗号分隔的测试命令列表。 14 -I(i 的大写字母) Idle 模式。仅打开 N 个 idle 连接并等待。

  例如:

redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q

  测试结果:

SET: 63291.14 requests per second LPUSH: 58479.53 requests per second

    以上实例中主机为 127.0.0.1,端口号为 6379,执行的命令为 set,lpush,请求数为 10000,通过 -q 参数让结果只显示每秒执行的请求数。

2. memtier_benchmark的使用

    memtier_benchmark是Redis Labs推出的一款命令行工具。它可以根据需求生成多种结构的数据对数据库进行压力测试,以了解目标数据库的性能极限。其部分功能特性如下。

支持Redis和Memcached数据库测试。 支持多线程、多客户端测试。 可设置测试中的读写比例(SET: GET Ratio)。 可自定义测试中键的结构。 支持设置随机过期时间。

   使用教程如下:

(1)安装依赖

    memtier_benchmark的安装依赖以下依赖包:Git、libevent 2.0.10或更高版本、libpcre 8.x、autoconf、automake、GNU make、GCC C++ compiler。

yum install git yum install autoconf automake make gcc-c++ yum install pcre-devel zlib-devel libmemcached-devel # 如您系统中的libevent库不符合要求,下载并安装libevent-2.0.21 wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz tar xfz libevent-2.0.21-stable.tar.gz pushd libevent-2.0.21-stable ./configure make sudo make install popd # 设置PKG_CONFIG_PATH使configure能够发现前置步骤安装的库。 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}

(2)下载并编译memtier_benchmark    

git clone https://github.com/RedisLabs/memtier_benchmark.git cd memtier_benchmark autoreconf -ivf ./configure make make install

(3)测试方法

   使用示例:

./memtier_benchmark -s r-XXXX.redis.rds.aliyuncs.com -p 6379 -a XXX -c 20 -d 32 --threads=10 --ratio=1:1 --test-time=1800 --select-db=10

   具体参数如下:

选项 说明 -s Redis数据库的连接地址 -a Redis数据库的密码 -c 测试中模拟连接的客户端数量 -d 测试使用的对象数据的大小 --threads 测试中使用的线程数 --ratio 测试命令的读写比率(SET:GET Ratio) --test-time 测试时长(单位:秒) --select-db 测试使用的DB数量

更多详细的参数,可以运行:./memtier_benchmard --help 查询。 

3. python脚本对redis进行测试

  除了使用redis-benchmard和memtier_benchmark,我们也可以使用python脚本对Redis进行性能测试。

  首先需要安装python版本的Redis:

pip install redis

  接着就可以编码连接Redis,并且进行测试:

(1)简单连接

import redis # 创建Redis对象进行连接 # 参数:decode_responses是否解码返回值 r = redis.Redis(host = 'localhost', port = 6379, password = '123456', decode_responses = True) # 终端下的命令在代码中都是函数 r.set('name', 'xiaoming') print(r.get('name'))

(2)连接池

  多个redis对象使用同一个连接池进行连接,避免了多次连接、断开等操作的系统开销

import redis # 创建连接池,减少了多次的连接、断开的开销 pool = redis.ConnectionPool(password = '123456', decode_responses = True) # 创建Redis对象 r = redis.Redis(connection_pool = pool) print(r.get('name'))

(3)使用管道

管道可以记录多个操作,然后一次将操作发送至数据库,避免了多次向服务器发送少量的数据 多个操作可以依次进行保存,然后发送,也可以进行连贯操作 import redis # 创建连接池,减少了多次的连接、断开的开销 pool = redis.ConnectionPool(password = '123456', decode_responses = True) # 创建Redis对象 r = redis.Redis(connection_pool = pool) # 创建管道 pipe = r.pipeline() # 保存记录操作 #pipe.set('name', 'dahua') #pipe.set('age', 20) # 执行操作(发送到服务器),一次可以执行多个操作,可以避免多次的想服武器发送数据 #pipe.execute() # 也可以进行连贯操作 pipe.set('name', 'haha').set('age', 10).execute() print(r.get('name'))



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有