Redis安装及性能测试

Redis安装及性能测试

1. Redis简介

Redis(Remote Dictionary Server)是一款开源的内存数据结构存储系统,广泛应用于缓存、消息队列、实时分析等场景。它支持多种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)、位图(bitmaps)、HyperLogLogs和地理空间索引(geospatial indexes)。Redis的特点是其高性能和丰富的数据结构操作。

性能测试使用官方测试工具redis-benchmark,工具模拟N个客户端同时发出M个请求。

2. Redis安装

Redis可以在多种操作系统上安装,包括Linux、macOS和Windows。以下是不同系统的安装步骤:

2.1 在Linux上安装Redis

2.1.1 镜像源安装(以ubuntu为例)
  1. 更新包列表
sudo apt-get update
  1. 安装Redis
sudo apt-get install redis-server
  1. 启动Redis服务
sudo systemctl start redis-server
  1. 设置Redis在系统启动时自动启动
sudo systemctl enable redis-server
  1. 配置redis
# 修改配置文件
sudo vim /etc/redis/redis.conf
...
#远程访问 默认bind 127.0.0.1 ::1
bind 0.0.0.0 
...
# 更改端口
port 6379 
...
# 设置密码,根据需要是否开启
# requirepass foobared
...

配置修改后重启redis生效。

sudo systemctl restart redis-server

2.1.2 源码编译安装
# 下载redis-6.0.9客户端。
$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
# 解压客户端压缩包。
$ tar xzf redis-6.0.9.tar.gz
# 进入redis-6.0.9的src目录下。
$ cd redis-6.0.9/src
# 编译安装
$ sudo make && sudo make install

备注:
CentOS7编译安装redis6.0.9需要将gcc版本升级到5.3及以上,默认gcc版本为4.8.5。

2.2 在macOS上安装Redis

  1. 使用Homebrew安装
brew update
brew install redis
  1. 启动Redis服务
brew services start redis

2.3 在Windows上安装Redis

  1. 下载Redis:从Redis Windows下载页面下载最新的稳定版本。

  2. 解压缩并安装:解压缩下载的文件并运行redis-server.exe来启动Redis服务器。

3. Redis性能测试方案

测试Redis的性能,可以使用Redis自带的性能测试工具redis-benchmark,或者一些第三方工具如memtier_benchmark

3.1 redis-benchmark测试性能

3.1.1 参数说明

源码编译安装的话redis-benchmark位于src目录下,如果是镜像源安装可以直接运行redis-benchmark命令。

$ redis-benchmark -h {IP} -p {Port} -a {password} -n {nreqs} -r {randomkeys} -c {connect_number} -d {datasize} -t {command}

参数参考值:-c {connect_number}:200,-n {nreqs}:10000000,-r {randomkeys}:1000000,-d {datasize}:32。

参数说明:
    -h 表示实例的域名连接地址或IP地址。
    -p 表示实例的端口,默认为6379。
    -a 表示实例的连接密码,免密连接的实例无需输入-a {password}-t 表示执行具体测试命令合集。例如只测试set命令时,使用-t set;如果要测试ping、get、set命令,则使用 -t ping,set,get,命令间使用“,”分隔。不指定则运行全部命令测试。
    -c 表示客户端连接数。
    -d 表示单条数据大小,单位Byte。
    -n 表示测试包数量。
    -r 表示使用随机key数量。
    -q 输出精简的测试结果。
    -P 默认情况下,Redis 客户端一次请求只发起一个命令。通过-P设置每个Pipeline批量执行的命令数量,可以提高性能。
3.1.2 测试执行
# 运行全部命令测试。全部命令测试时间较长,建议根据需求指定部分命令进行测试。
$ redis-benchmark -c 200 -q -n 100000 -r 1000 -d 32
PING_INLINE: 59347.18 requests per second
PING_BULK: 59031.88 requests per second
SET: 54466.23 requests per second
GET: 53590.57 requests per second
INCR: 50581.69 requests per second
LPUSH: 58823.53 requests per second
RPUSH: 59171.59 requests per second
LPOP: 57240.98 requests per second
RPOP: 60606.06 requests per second
SADD: 64516.13 requests per second
HSET: 61576.36 requests per second
SPOP: 50150.45 requests per second
ZADD: 56148.23 requests per second
ZPOPMIN: 55710.31 requests per second
LPUSH (needed to benchmark LRANGE): 52328.62 requests per second
LRANGE_100 (first 100 elements): 34530.39 requests per second
LRANGE_300 (first 300 elements): 13227.51 requests per second
LRANGE_500 (first 450 elements): 9828.98 requests per second
LRANGE_600 (first 600 elements): 8137.36 requests per second
MSET (10 keys): 53705.69 requests per second

# 指定部分命令测试
$ redis-benchmark -c 200 -q -t ping,set -n 100000 -r 1000 -d 32
PING_INLINE: 50100.20 requests per second
PING_BULK: 52192.07 requests per second
SET: 58548.01 requests per second

# 配置-P,命令批量执行。性能提升明显。
$ redis-benchmark -c 200 -q -P 10 -n 100000 -r 1000 -d 32
PING_INLINE: 472723.00 requests per second
PING_BULK: 508636.38 requests per second
SET: 459174.31 requests per second
GET: 548858.69 requests per second
INCR: 504500.00 requests per second
LPUSH: 611707.31 requests per second
RPUSH: 635157.25 requests per second
LPOP: 581686.00 requests per second
RPOP: 609756.06 requests per second
SADD: 519123.69 requests per second
HSET: 512871.81 requests per second
SPOP: 578670.56 requests per second
ZADD: 436130.44 requests per second
ZPOPMIN: 529263.19 requests per second
LPUSH (needed to benchmark LRANGE): 538870.94 requests per second
LRANGE_100 (first 100 elements): 62141.89 requests per second
LRANGE_300 (first 300 elements): 17829.78 requests per second
LRANGE_500 (first 450 elements): 12459.76 requests per second
LRANGE_600 (first 600 elements): 8843.38 requests per second
MSET (10 keys): 176070.17 requests per second

说明:

  • 如果是测试单机或主备实例,使用1台客户端即可。
  • 如果测试Redis集群,建议多台客户端发起测试,且每台测试客户端各开启两个benchmark客户端。
  • redis-benchmark测试cluster集群实例时需要加 --cluster 参数,其他实例类型不需要加。
  • 如果想对cluster集群的最大连接数进行性能压测,但是压测到1万连接时程序退出,或者报错 Cannot assign requested address。这说明是测试用的ECS本机性能不足,请先检查自己是否只用了1台ECS进行压测。想要对集群压测,建议准备3台ECS,每台ECS起3个redis-benchmark来测试redis实例的最大连接数。

参考资料:

4. 优化Redis性能的建议

  1. 配置优化:调整redis.conf中的配置,例如maxmemorymaxclients等参数。
  2. 硬件优化:使用更快的内存和多核CPU。
  3. 持久化策略:选择合适的持久化策略(RDB快照或AOF日志),平衡性能和数据安全。
  4. 分片与集群:使用Redis分片或集群功能,分散负载,提升整体性能。
  5. 网络优化:确保低延迟的网络环境,减少网络瓶颈。

通过合理的配置和优化,可以显著提升Redis的性能,满足高并发、低延迟的应用需求。

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lldhsds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值