1. Redis 在测试项目中怎么理解
Redis 是测试项目里非常常见的中间件。很多测试同学知道 Redis 是缓存,但面试时如果只说“Redis 用来提高性能”,回答会比较浅。真实项目中,Redis 不只用于缓存,还常用于验证码、登录态、Token、计数器、限流、分布式锁、排行榜、临时状态、热点数据存储等场景。测试工程师不一定要像后端一样精通 Redis 底层数据结构和持久化机制,但必须知道 Redis 在业务链路中承担什么角色,以及它会带来哪些测试风险。
面试中问“Redis 在测试项目中怎么理解”,面试官通常想看你是否有中间件意识。你要能讲清楚:哪些功能会用 Redis,测试时关注缓存是否命中、过期时间是否正确、缓存和数据库是否一致、删除修改后缓存是否刷新、并发下分布式锁是否有效、Redis 异常时系统是否降级。这样回答才像真实项目经验。
一、Redis 在项目中常见用途
1. 缓存热点数据
比如商品详情、用户信息、首页配置、字典数据、活动信息。这些数据如果每次都查数据库,会增加数据库压力。放到 Redis 后,系统先查缓存,缓存没有再查数据库。
测试关注:缓存是否正确命中,数据库更新后缓存是否刷新。
2. 验证码
短信验证码、图片验证码、邮箱验证码常放 Redis,并设置过期时间。
测试关注:验证码有效期、重复发送、过期后是否失效、错误次数限制。
3. 登录态和 Token
有些系统会把登录 Token、Session 信息、用户权限临时存 Redis。
测试关注:登录后 Token 是否写入,退出登录后是否删除,过期时间是否正确。
4. 计数器和限流
比如短信发送次数、登录错误次数、接口访问频率、活动库存计数。
测试关注:计数是否准确,是否按用户或 IP 维度隔离,过期时间是否合理。
5. 分布式锁
在高并发下防止重复处理,比如防重复下单、库存扣减、定时任务重复执行。
测试关注:并发下是否出现重复提交、超卖、重复消费、锁未释放。
二、Redis 和数据库的关系
Redis 通常不是替代数据库,而是作为缓存或临时状态存储。数据库是最终数据源,Redis 用于提高读取速度或支持临时业务状态。
典型流程:
- 用户查询商品详情;
- 系统先查 Redis;
- Redis 有数据,直接返回;
- Redis 没有数据,再查数据库;
- 查到后写入 Redis;
- 下次请求命中缓存。
测试要关注的是:缓存里的数据是否和数据库一致。如果数据库改了,但 Redis 没刷新,页面可能仍显示旧数据。
三、Redis 测试关注点
1. 缓存命中和未命中
缓存命中时接口响应快;缓存未命中时会查数据库并写入缓存。
测试可以通过日志、响应时间、Redis key、数据库访问情况判断。
2. 过期时间 TTL
Redis key 通常有过期时间。验证码 5 分钟过期,Token 2 小时过期,活动缓存 10 分钟刷新。
测试要验证:
- 过期前可用;
- 过期后不可用;
- 续期逻辑是否正确;
- 重复生成是否覆盖旧值。
3. 缓存更新
修改数据库后,缓存是否删除或更新。
比如修改商品价格后,如果 Redis 未刷新,商品详情仍显示旧价格。
4. 缓存删除
删除业务数据后,缓存是否清理。
比如删除用户地址后,地址列表缓存没有清,页面仍显示已删除地址。
5. Redis 异常
Redis 不可用时系统怎么表现。核心业务是否降级,还是直接全部不可用。
测试环境可以模拟 Redis 连接失败,但要注意影响范围。
四、项目场景:商品详情缓存
商品详情是典型缓存场景。
测试用例可以设计:
- 第一次查询商品,缓存不存在;
- 系统查数据库并写入 Redis;
- 第二次查询商品,应命中缓存;
- 修改商品名称或价格;
- 再次查询商品;
- 验证页面是否显示最新数据;
- 如果仍显示旧数据,说明缓存未刷新。
提 Bug 时可以写:
修改商品价格后,数据库 price 已更新为 99,但商品详情接口仍返回旧价格 89。初步判断 Redis 商品详情缓存未删除或未刷新。
五、项目场景:验证码 Redis 测试
验证码通常写入 Redis,设置过期时间。
测试点:
- 验证码发送后能使用;
- 过期后不能使用;
- 重复发送后旧验证码是否失效;
- 错误验证码是否拦截;
- 多次错误是否限制;
- 不同手机号验证码是否隔离;
- 验证码使用成功后是否删除。
如果验证码过期时间是 5 分钟,可以验证 4 分 59 秒内可用,5 分钟后失效。
六、项目场景:登录 Token
如果 Token 存 Redis,测试要关注:
- 登录成功后 Redis 是否写入 Token;
- Token 是否设置过期时间;
- 后续接口是否校验 Redis 中 Token;
- 退出登录后 Redis Token 是否删除;
- 过期 Token 是否不能继续访问;
- 多端登录策略是否符合需求。
常见 Bug:退出登录后前端清了 Token,但后端 Redis 中 Token 仍有效,旧 Token 还能访问接口。
七、项目场景:分布式锁
分布式锁常用于防重复提交和并发控制。
比如重复点击创建订单按钮,如果没有锁或幂等控制,可能生成多个订单。
测试方法:
- 快速重复点击;
- 使用接口工具并发请求;
- 自动化脚本模拟并发;
- 检查数据库是否产生重复数据;
- 检查库存是否扣减异常;
- 查看日志是否有加锁、释放锁记录。
要注意锁超时时间。如果业务执行时间超过锁过期时间,可能出现并发问题。
八、Redis 常见问题
1. 缓存和数据库不一致
最常见问题。修改数据库后缓存未更新,用户看到旧数据。
2. 缓存过期时间错误
验证码过期太短或太长,Token 提前失效或长期有效。
3. key 设计不合理
不同用户使用相同 key,导致数据串号。
4. Redis 连接异常
Redis 宕机或网络异常导致接口失败。
5. 并发锁失效
锁未释放、锁过期时间不合理、重复提交仍然成功。
九、面试回答模板
如果面试官问“Redis 在测试项目中怎么理解”,可以这样回答:
我理解 Redis 在项目中不只是缓存,还常用于验证码、登录 Token、计数器、限流和分布式锁。测试时我会关注 Redis 和数据库数据是否一致,缓存过期时间是否正确,新增、修改、删除业务数据后缓存是否刷新,验证码或 Token 过期后是否失效,并发场景下分布式锁是否能防止重复提交。比如商品详情使用 Redis 缓存时,我会测试第一次查询写缓存、再次查询命中缓存、修改商品后缓存是否删除或更新,避免页面显示旧数据。
十、常见追问
追问:怎么测缓存是否更新?
先查询生成缓存,再修改数据库或通过接口修改业务数据,然后再次查询,验证返回是否为最新数据,也可以结合 Redis key、日志和数据库确认。
追问:验证码怎么测?
测发送、正确输入、错误输入、过期、重复发送、不同手机号隔离、使用后失效。
追问:Redis 挂了怎么办?
看业务是否支持降级。非核心缓存可以回源数据库,核心登录态依赖 Redis 时可能导致登录异常。
追问:分布式锁怎么测?
通过并发请求或重复点击验证是否产生重复订单、重复扣库存、重复处理任务。
十一、练习清单
- 准备一个商品缓存场景;
- 准备一个验证码场景;
- 准备一个 Token 过期场景;
- 理解 Redis key 和 TTL;
- 测缓存命中和未命中;
- 测修改后缓存刷新;
- 测删除后缓存清理;
- 测并发下分布式锁;
- 思考 Redis 异常降级;
- 准备 Redis 面试回答。
Redis 测试的核心不是会不会操作 Redis 命令,而是能不能围绕缓存一致性、过期时间、登录态、验证码、并发锁和异常降级设计测试场景。
配套刷题:

