- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
-
常见问题
- 实例类型/版本
- 实例特性
- 安全性
-
客户端和网络连接
- DCS实例支持公网访问吗?
- Redis连接失败问题排查和解决
- DCS实例是否支持跨VPC访问?
- Redis公网访问所需弹性IP是否收费?
- Redis连接时报错:“(error) NOAUTH Authentication required”。
- 客户Http的Server端关闭导致Redis访问失败
- 客户端出现概率性超时错误
- 使用Jedis连接池报错如何处理?
- 如何使用Redis-desktop-manager访问Redis实例?
- 使用SpringCloud时出现ERR Unsupported CONFIG subcommand怎么办?
- 客户端无法使用域名连接DCS缓存实例时如何处理?
- 本地环境是否可以连接缓存实例?
- 使用Redis实例的发布订阅(pubsub)有哪些注意事项?
- Redis 3.0实例公网开关被关闭是什么原因?
- 使用短连接访问Redis出现“Cannot assign requested address”错误
- 连接池选择及Jedis连接池参数配置建议
- 如何解决Lettuce 6.x版本客户端使用DCS实例兼容性问题?
- 应该选择域名还是IP地址连接Redis实例?
- 主备实例的只读地址是连接到主节点还是备节点?
-
Redis使用
- 是否支持CPU架构的变更?
- 实例是否支持变更可用区
- Redis实例能否修改VPC和子网?
- 实例是否支持自定义或修改端口?
- 实例是否支持修改访问地址?
- 实例无法删除是什么原因?
- 集群实例启动时间过长是什么原因?
- 使用redis_exporter出错怎么办?
- 什么是预留内存,如何配置预留内存?
- 创建的缓存实例为什么可使用内存比实例规格少一些?
- Redis 3.0 Proxy集群不支持redisson分布式锁的原因
- DCS Redis有没有后台管理软件?
- DCS缓存实例的数据被删除后,能否找回?
- 为什么实例实际可用内存比申请规格小而且已使用内存不为0?
- 如何查看Redis内存占用量
- Cluster集群实例容量和性能未达到瓶颈,但某个分片容量或性能已过载是什么原因?
- 访问Redis报OOM错误提示
- 不同编程语言如何使用Cluster集群客户端
- 使用Cluster的Redis集群时建议配置合理的超时时间
- 读取redis数据报超时错误
- hashtag的原理、规则及用法示例
- Redis key丢失是什么原因
- 重启实例后缓存数据会保留吗?
- 如何确认实例是单DB还是多DB
- Proxy集群开启多DB的使用限制及操作方式
- 如何创建多DB的Proxy集群实例?
- 扩容缩容与实例升级
-
数据备份/导出/迁移
- DCS实例是否兼容低版本Redis迁移到高版本
- 不同类型的操作系统间进行数据传递和操作,需要注意什么?
- 源Redis使用了多DB,能否迁移数据到集群实例?
- 源Redis迁移到集群实例中有哪些限制和注意事项?
- 在线迁移需要注意哪些?
- 在线迁移能否做到完全不中断业务?
- 在线迁移实例源端报“Disconnecting timedout slave”和“overcoming of output buffer limits”
- 如何导出Redis实例数据?
- 使用Rump工具迁移数据,命令执行后无报错,但Redis容量无变化
- 是否支持控制台导出RDB格式的Redis备份文件?
- 缓存实例备份文件如何存放?备份文件的数量是否有限制?
- Redis在线数据迁移是迁移整个实例数据么?
- AOF文件在什么情况下会被重写
- Redis迁移失败有哪些常见原因?
- 一个数据迁移能迁移到多个目标实例么?
- 怎么放通SYNC和PSYNC命令?
- 迁移或导入备份数据时,相同的Key会被覆盖吗?
- Cluster集群实例使用内置key且跨slot的Lua脚本时迁移失败
- 迁移故障处理
- 数据迁移失败问题排查
- Memcached如何迁移?
- 是否支持Memcached和Redis之间实例数据的迁移?
- 大Key/热Key分析/过期Key扫描
- Redis命令
- 监控告警
- 主备倒换
- 创建实例和权限
- Memcached使用
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
使用redis-benchmark测试Redis性能
Redis客户端源码包含一个名为redis-benchmark的性能测试工具,它可以模拟N个客户端同时向Redis发送M条查询命令的应用场景。
针对DCS Redis实例的性能评估,可以使用redis-benchmark测试某种规格的实例在某个高并发场景下执行SET或GET时的性能。
测试步骤
- 创建Redis缓存实例。
- 创建3台弹性云服务器(ECS),ECS选择与实例相同可用区、VPC、子网和安全组。
说明:
如果是测试单机或主备实例,创建1台ECS即可。
- 在每台ECS上安装redis-benchmark。可通过以下两种方式安装Redis-server,安装Redis-server的同时,会同步安装benchmark。
- 每台ECS上执行测试命令。
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数量。
- 不断调整客户端连接数,执行4,得到最大的QPS(Query Per Second,表示每秒处理的读写操作数,单位:次/秒)。
- 取3台测试ECS得到的每秒操作数总和,即为对应规格的性能数据。
如果测试Redis集群,建议每台测试ECS各开启两个benchmark客户端。
说明:
- redis-benchmark 测试cluster集群实例时需要加 --cluster 参数,其他实例类型不需要加。
- 如果想对cluster集群的最大连接数进行性能压测,但是压测到1万连接时程序退出,或者报错 Cannot assign requested address。这说明是测试用的ECS本机性能不足,请先检查自己是否只用了1台ECS进行压测。想要对集群压测,建议准备3台ECS,每台ECS起3个redis-benchmark来测试redis实例的最大连接数。
redis-cli常用选项
- -h <hostname> :服务器的主机名,可以是IP或者域名
- -p <port> :服务器的端口,默认是6379
- -a <password> :连接服务器的密码,免密连接的实例无需输入-a {password}
- -r <repeat> :执行指定命令N次
- -n <db> :数据库编号,默认是0
- -c :启用集群模式(遵循-ASK和-MOVED重定向)
- --latency :进入特殊模式连续采样延迟
- --scan :非阻塞式的扫描键空间(区别于keys *扫描键空间会导致redis-server阻塞)
- --eval <file> :使用Lua脚本发送EVAL命令
- -x :读取STDIN中的最后一个参数
- --bigscan :扫描数据集的大key
- --raw : 如果显示数据是这样的'\xe4\xb8'十六进制编码,可以尝试加--raw转为直接显示原始数据
redis-cli常用命令举例
redis-benchmark (redis-6.0.9)常用选项
- -h <hostname> :服务器的主机名,可以是IP或者域名。
- -p <port> :服务器的端口,默认是6379。
- -a <password> :连接服务器的密码,免密连接的实例无需输入-a {password}。
- -c <clients> :并发连接数 ,默认50。
- -n <requests> :请求总数(默认为100000)。
- -d <size> :SET/GET值的数据大小(以字节为单位,默认值2)。
- --dbnum <db> :选择指定的数据库编号(默认值0)。
- --threads <num> :启动多线程模式(redis 6.0版本编译的redis-benchmark才支持,多线程压测redis的性能优于单线程)。
- --cluster :启动集群模式(cluster集群才需要该参数)。
- -k <boolean> :1=keep alive 0=reconnect(默认值1,可以测试长短连接)。
- -r <keyspacelen> : 对SET/GET/INCR使用随机键,对SADD使用随机值。参数中keyspacelen 指的是添加键的数量。
- -e :如果服务器回复错误,请在stdout上显示它们。
- -q :只展示query/sec的值。
- -l :循环测试。
- -t <tests> :可以对指定的命令进行测试。
- -I :空闲模式,仅打开N个空闲连接并等待。
- -P <numreq> :管道请求的并发数量(默认值为1)。
了解redis-benchmark更多详情,请访问:https://redis.io/docs/latest/operate/oss_and_stack/management/optimization/benchmarks/
redis-benchmark常用命令举例
- 单机、主备、读写分离和proxy集群的测试命令:
./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} -t {command}
- cluster集群测试命令:
./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} --cluster -t {command}
- 测试短连接:
./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} -k 0 -t {command}
- 测试空闲连接:
./redis-benchmark -h {IP或域名} -p 6379 -a {pwd} -c {clients} -I