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

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-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 <numreq> 请求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

   具体参数如下:

选项说明
-sRedis数据库的连接地址
-aRedis数据库的密码
-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'))

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值