Redis测试

以下是 Redis 测试 的详细步骤和方法,涵盖功能验证、性能测试、高可用性测试和安全测试,适用于开发、运维和测试人员全面评估 Redis 的稳定性和性能。

一、测试目标

功能验证:确保 Redis 的基本功能(如字符串、哈希、列表、集合、有序集合)正常工作。

性能测试:评估 Redis 在高并发、大规模数据场景下的吞吐量和延迟。

高可用性测试:验证主从复制、哨兵模式、集群模式的故障转移能力。

持久化测试:确保 RDB 和 AOF 持久化机制在重启后数据不丢失。

安全测试:验证密码保护、访问控制等安全策略的有效性。

二、测试环境准备

安装 Redis

单节点测试:redis-server(默认端口 6379)。

集群测试:配置主从复制、哨兵模式或 Redis Cluster。

工具准备

Redis 命令行工具:redis-cli

性能测试工具:redis-benchmark

自动化测试工具:Python(redis-py)、JMeter

监控工具:redis-cli info、redis-stat、Prometheus + Grafana

三、功能测试

1. 基本数据类型测试

步骤

字符串类型

哈希类型

列表类型

集合类型

有序集合类型

验证方法

检查返回值是否符合预期(如 OK、1 表示成功)。

使用 redis-cli type <key> 验证数据类型。

2. 过期时间测试

步骤

验证方法

等待过期时间后,GET 命令应返回 nil。

3. 事务测试(MULTI/EXEC)

步骤

验证方法

事务中的所有命令应按顺序执行,结果一致。

四、性能测试

1. 使用 redis-benchmark 测试

步骤

单线程测试

多线程测试

参数说明

-n:请求总数。

-c:并发客户端数。

-t:测试命令(如 set,get)。

-P:管道化请求数。

-k:是否启用 Keepalive(1 表示启用)。

验证方法

观察吞吐量(requests per second)和平均延迟(latency)。

比较不同并发数下的性能差异。

2. 使用 JMeter 测试

步骤

添加 TCP 请求,配置 Redis 的 IP 和端口。

使用 CSV 数据文件 提供测试数据(如 key1, key2)。

添加 监听器(如 View Results Tree、Aggregate Report)。

运行测试并分析结果。

五、高可用性测试

1. 主从复制测试

步骤

配置主从节点(redis.conf 中添加 slaveof <master-ip> 6379)。

在主节点写入数据:

在从节点读取数据:

验证方法

从节点应同步主节点的数据。

使用 INFO replication 检查复制状态。

2. 哨兵模式测试(故障转移)

步骤

配置哨兵模式(sentinel.conf)。

模拟主节点故障(关闭主节点进程)。

检查哨兵是否自动选举新的主节点。

在客户端连接哨兵地址,验证读写是否正常。

验证方法

使用 redis-cli -h sentinel -p 26379 info sentinel 查看故障转移状态。

3. 集群模式测试

步骤

使用 redis-cli --cluster create 创建集群。

向不同节点写入数据:

模拟节点故障(关闭某个节点),观察数据是否自动迁移。

验证方法

使用 CLUSTER NODES 检查节点状态和槽位分配。

六、持久化测试

1. RDB 持久化测试

步骤

配置 redis.conf:

写入数据并等待触发 RDB 快照。

停止 Redis 服务并重启,检查数据是否恢复。

验证方法

使用 redis-cli keys * 验证数据是否保留。

2. AOF 持久化测试

步骤

配置 redis.conf:

写入数据并检查 AOF 文件大小。

停止 Redis 服务并重启,检查数据是否恢复。

验证方法

使用 redis-check-aof 工具验证 AOF 文件完整性。

七、安全测试

1. 密码保护测试

步骤

配置 redis.conf:

使用 redis-cli 连接并尝试未授权访问:

使用密码连接:

验证方法

未授权访问应返回 -NOAUTH 错误。

2. 访问控制测试(ACL)

步骤

配置 ACL 用户(redis.conf 或 ACL SETUSER 命令)。

使用不同用户权限测试读写操作。

检查是否限制了特定命令或数据库。

验证方法

低权限用户应无法执行高危命令(如 FLUSHALL)。

八、监控与日志分析

实时监控

日志分析

检查 redis-server 日志文件(默认 redis.log)。

使用 grep 过滤错误或警告信息。

九、测试报告示例

测试类型 结果 备注

基本功能测试 通过 所有数据类型操作正常

性能测试(100并发) 吞吐量 100k/s 平均延迟 0.5ms

主从复制测试 通过 从节点同步主节点数据

AOF 持久化测试 通过 重启后数据完整恢复

十、注意事项

生产环境测试:避免在生产环境中直接运行高负载测试,建议使用测试集群。

数据隔离:测试数据应与生产数据隔离,使用独立的 Redis 实例或数据库。

工具选择:根据测试目标选择合适的工具(如 redis-benchmark 用于性能测试,redis-cli 用于功能验证)。

通过以上步骤和方法,可以全面验证 Redis 的功能、性能和高可用性,确保其在生产环境中的稳定运行。

Redis有几种基础数据类型:

1,string

2,hash哈希

3,list列表

4,set集合

5,zset有序集合

二,Redis缓存测什么

Redis缓存测试主要测试功能和性能两个方面

1,功能方面

1.1,测试点:

缓存中有缓存数据,正确获取缓存数据

在缓存中增加数据,删除数据,redis中缓存数据正确

缓存中没有缓存数据,redis从DB正确获取到缓存数据,并储存再redis中,然后返回正确的响应到客户端

缓存数据过期,redis重新获取DB缓存数据,并正确反映到客户端

缓存数据的过期时间正常生效,过期时间内,获取缓存数据,没有到DB的请求,过期后,redis没有缓存数据了

如果是删除缓存数据的设计,需要测试缓存数据响应到客户端以后,redit中缓存数据被删除

缓存到达上限,如何处理

2,性能测试

2.1,测试点:

redis停止服务,业务是否正常

redis缓存击穿,大量访问redis中不存在的值,会到DB去查询

redis缓存雪崩,在同一时间大量的缓存过期,对DB造成巨大访问压力

缓存数据到达上限,业务表现是什么,超量淘汰机制

缓存数据出问题时,redis数据能否正确快速回复数据

redis服务断开后回复,业务流程是否正常回复到redis查询

三,Redis怎么测

1,纯基础功能的测试,比如缓存读写的正确性,过期时间等,可以自己搭建本地的redis数据库来测试,不影响其他环境

测试点:

键值对 CRUD:SET写入后GET是否正确,DEL后是否删除;

数据结构操作:Hash 的HSET/HGET、List 的LPUSH/LRANGE、Set 的SADD/SMEMBERS等是否符合预期;

过期时间:设置EX/PX后,TTL是否正确,过期后是否无法读取;

覆盖行为:对已存在的键SET新值,是否覆盖旧值,过期时间是否重置。

2,验证业务系统和redis的集成效果(比如缓存更新逻辑,缓存穿透,缓存雪崩等),需要用专门的测试环境

通常是运维团队搭建,与开发的业务系统配套,规模比较小。

测试时,问开发要连接信息:主机地址,端口,密码,专用于测试的数据库的编号

登录redis: cmd命令:redis-cli -h 主机地址 -p 端口 -a 密码 -n 数据库编号

登录后,使用redis命令来测试

3,UAT环境管理比较严,要注意数据清理,避免批量处理数据,测试完要清理数据,要和运维确认有数据备份

4,自动化测试的话,用python的redis-py库来做

点击查看代码

没有python环境的话,用shell脚本实现自动化测试redis

点击查看代码

5,redis可视化结果检查:用redis desktop manager RDM工具来查看

6,redis的性能测试工具 redis-benchmark自带工具,命令是:

(测试100个并发连接,共100000次请求的GET/SET性能)

redis-benchmark -h redis-test.example.com -p 6379 -a test123 -c 100 -n 100000 get set

输出结果会包含QPS,平均响应时间等

2、Redis功能测试角度

redis数据生效时,读取是否正确

redis数据不存在,能否正常从db中读取到正确的值,并正确写入Redis和返回给上层

数据在redis和db中都不存在时的表现是否正常

删除数据时,redis和db的数据是否一致

缓存增加/更新功能是否正确,查看缓存数据是否正确

增加相关日志,查看日志

后门接口工具

使用命令行,memcached和reids可以登录后,直接查看

缓存删除

缓存有效,验证相关业务功能

缓存被删除,验证相关业务功能

缓存过期失效,memcached 和redis 可以设置失效时间,查看失效时间有没有,对不对

超量淘汰机制:缓存达到上限怎么处理

缓存穿透

缓存雪崩

redis缓存服务停掉

缓存超时

缓存数据被误修改后,快速恢复到指定版本

缓存数据被误删除后,快速恢复数据

性能测试关键指标

Redis 性能测试关注在不同负载下的表现,主要考察以下指标:

吞吐量(Throughput, QPS):单位时间内处理的请求数(一般指每秒查询数 QPS)。这是衡量 Redis 性能的核心指标之一,多数文档和厂商给出的 Redis 性能规格都是以 QPS 表示。

响应时间(Latency):每次操作的延迟,通常统计平均延迟(Avg)、百分位延迟(如 p50、p95、p99)等。面试时可提到关注中位延迟和尾延迟,以评估系统稳定性。

并发能力:Redis 能够同时支持的并发客户端数或并发连接数。可以通过压测工具设置并发数 (-c 参数) 测试系统在高并发下的性能。

资源使用情况:监控 CPU 使用率、内存占用、网络带宽等。尤其在高负载时,需要关注 Redis 进程是否因资源瓶颈而限制性能。

负载稳定性:在长时间或循环压测下,观察性能是否下降(如因为 AOF 重写、内存碎片化、GC 等导致的延迟波动)。

实际测试时,可模拟不同场景:冷启动(空缓存)和热启动(缓存预热)下的性能对比;使用不同大小的数据;并发客户端逐渐加压等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容