ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Redis测试方法全攻略:冒烟、压测与稳定性验证

Redis测试方法全攻略:冒烟、压测与稳定性验证 一、为什么要测试RedisRedis作为高性能缓存数据库在生产环境中承担着至关重要的角色。上线前的充分测试是保障其稳定运行的必经之路。本文将系统介绍Redis测试的三大维度冒烟测试、压力测试和稳定性测试。二、第一板斧冒烟测试连通性测试冒烟测试的目的是验证Redis服务是否正常启动、网络是否连通、认证是否通过。2.1 使用redis-cli进行连通性测试最简单的做法是使用Redis自带的命令行工具redis-clibash# 连接Redis redis-cli -h 127.0.0.1 -p 6379 # 执行PING命令 127.0.0.1:6379 PING PONG如果返回PONG说明连接正常。如果设置了密码需要先认证bashredis-cli -h 127.0.0.1 -p 6379 -a your_password 127.0.0.1:6379 PING PONG2.2 基本读写测试连通之后还需要验证基本的读写功能是否正常bash127.0.0.1:6379 SET test_key hello OK 127.0.0.1:6379 GET test_key hello 127.0.0.1:6379 DEL test_key (integer) 1能存能取说明基础功能正常。测试完成后记得删除测试key避免污染生产数据。三、第二板斧压力测试性能基准测试压力测试的目的是评估Redis在不同负载下的吞吐量QPS和延迟表现。Redis官方提供了强大的基准测试工具——redis-benchmark。3.1 redis-benchmark常用参数参数说明默认值-h服务器主机名127.0.0.1-p服务器端口6379-c并发连接数50-n总请求数100000-dSET/GET值的数据大小字节2-t指定测试的命令列表所有命令-q安静模式仅显示QPS值--l循环测试永久执行-3.2 基础压测示例快速测试SET和GET命令bashredis-benchmark -t set,get -n 100000 -q输出示例textSET: 143678.16 requests per second GET: 145560.41 requests per second模拟100个并发客户端发送10万个请求bashredis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 1000003.3 高级压测场景1. 使用随机Key模拟真实缓存场景bashredis-benchmark -t set,get -n 100000 -r 1000000 -q-r 1000000表示使用最多100万个不同的随机Key。2. 测试大Value场景bashredis-benchmark -t set,get -d 1024 -n 100000 -q-d 1024表示测试1KB大小的数据。3. 长时间稳定性压测循环执行bashredis-benchmark -l -c 50 -n 100000使用-l参数可以让测试永久执行适合做长时间稳定性观察。3.4 压测注意事项不要在同一台机器上既当服务端又当客户端否则CPU会被打满导致数据不准。压测前确保Redis实例已启动且网络延迟尽可能低。关注P99延迟最慢的1%请求的耗时这比平均值更能反映真实体验。四、第三板斧稳定性测试故障模拟稳定性测试的目的是验证Redis在极端情况下的表现包括内存溢出时的淘汰策略、主从切换时的故障转移等。4.1 内存淘汰策略测试当Redis内存达到上限时需要验证它是否会按照配置的淘汰策略自动删除旧数据而不是直接崩溃报OOM错误。测试步骤设置maxmemory和淘汰策略bashredis-cli CONFIG SET maxmemory 100mb redis-cli CONFIG SET maxmemory-policy allkeys-lru持续写入数据直到内存达到上限可以使用压测工具持续写入bashredis-benchmark -t set -n 1000000 -d 1024监控淘汰情况bashredis-cli INFO stats | grep evicted_keys如果evicted_keys在增长说明淘汰策略正在生效。验证写入是否正常内存满后继续写入观察是正常淘汰旧数据还是返回OOM错误。注意maxmemory-policy默认为noeviction此时内存满后写入会直接报错。生产环境推荐使用allkeys-lru或volatile-lru。4.2 主从切换测试对于使用Sentinel或Cluster模式的高可用架构需要验证主节点故障时从节点能否自动接管。测试步骤搭建一主一从Sentinel环境。确认主从同步正常在Master写入测试Key在Slave上验证是否同步使用INFO keyspace检查主从各DB的Key数量是否一致模拟主节点故障直接杀掉Master进程。bash# 找到Redis主进程PID ps -ef | grep redis-server # 杀掉主节点进程 kill -9 master_pid观察故障转移Sentinel集群是否在几秒内选举出新的Master客户端是否有自动重连和切换机制验证数据完整性在新Master上检查数据是否完整。恢复原主节点重启后观察它是否自动成为新Master的Slave。五、总结Redis测试的三大维度可以概括为测试类型核心目的关键工具/命令冒烟测试验证连通性和基本功能redis-cli PING、SET/GET压力测试评估吞吐量和延迟redis-benchmark稳定性测试验证淘汰策略和故障转移CONFIG SET、模拟杀进程一句总结能连上、跑分达标、杀主节点不丢数据且能自动切Redis就算测过关了。
返回列表