news 2026/2/13 8:10:58

面试官突然问我Redis怎么测?!我当场懵了...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
面试官突然问我Redis怎么测?!我当场懵了...

有些测试朋友来问我,redis要怎么测试?首先我们需要知道,redis是什么?它能做什么?

redis是一个key-value类型的高速存储数据库。

redis常被用做:缓存、队列、发布订阅等。

所以,“redis要怎么测试?”这个问题就可以转化为:

  • 缓存怎么测试?

  • 队列怎么测试?

  • 订阅怎么测试?

在我所接触的技术栈中,发布订阅很少用redis的,我们主要说一说缓存和队列。

01 缓存的分类

缓存有几种类型:文件缓存、数据库缓存、内存缓存、浏览器缓存。

浏览器缓存指的是浏览器自身的缓存能力。现代浏览器为了加快页面加载速度,往往会把css、js等资源文件下载一次之后缓存一段时间,直到缓存失效或者请求明确告知需要更新。

通过后端语言直接渲染smarty等模板渲染方式输出界面的,一般都会选择文件类型缓存。

图--文件缓存

随着大前端技术迅速发展,前后端分离越来越流行,smarty渲染的方式使用越来越少,对后端服务的接口响应时间要求也越来越高,文件缓存不再适用这种场景,数据库缓存越来越流行。

数据库缓存目前最常见的:redis和memcached。它们都是分布式的key-value高速缓存系统。

上图--redis缓存

内存缓存跟数据库缓存也是类似的,但受技术栈限制,比如Java可以使用,并且Java中使用非常频繁,但PHP无法使用。内存缓存比数据库缓存更快,但因为内存不可能一直增加,所以限制更多,稍不注意就会出现内存泄漏等问题。

在实际的使用过程中,Java接口往往会将部分高频数据塞到内存缓存中作为一级缓存,次高频数据塞到redis中作为二级缓存,最后再从db查询数据。

上图--组合使用

缓存的作用:

从上面的内容你可能已经知道,缓存最重要的两个作用:加快访问速度、减少服务器和db压力。

02 缓存的使用场景

你可能会问,上面这些跟测试没啥关系啊?不,我认为了解上面的内容对测试还是有帮助的。你知道在技术实现上,什么时候应该加缓存,什么时候不应该加缓存吗?这就是对一个接口的技术把控,不光开发需要知道,测试人员也一样。

如果一个应该添加缓存的接口没有添加缓存在压测之前被你提前发现了,你不觉得自豪吗?其实跟缓存的作用一一对应,当接口的qps较高(比如超过100)或者对响应速度有要求,或者服务器性能、db性能较差的,都可以尝试使用缓存解决问题。

我举几个例子说明:

1、微信新版本中,个人中心多了一个“状态”功能。

微信的用户体量非常庞大,访问qps非常高,几十万人在同一秒访问,不可能每次都去查询数据库。

类似这种需求,一般会是这样的做法:先把用户的状态数据缓存在app中(浏览器缓存),在某个时间段通过主动推或者被动拉的方式调用后端接口请求“状态”数据;接口从redis/memcached的缓存中读取数据并返回;如果数据量不那么庞大,接口可以直接从内存缓存中读取数据并返回;数据返回后,再把用户app中的缓存更新。

上图--示例1

2、有一个小型电商的商品管理后台列表页面,访问人数不多,sku改动频次很低,可能3天才被访问几十次。这种场景一不需要使用缓存,二在商品信息被更新之后需要立即看到更新后的数据,不适合使用缓存,所以不建议使用缓存。

3、同样的电商管理后台,这次是一个统计页面,统计昨天/今天/近一周的商品销售情况。

这个场景可以分情况来看,有多种不同的解决方案。

(我们抛开大数据统计的各类技术方案,简单实现一个系统的统计功能)

03 缓存的生成方式

了解到缓存的使用场景之后,我们来说说缓存的生成方式。

一般来说缓存有两种使用方式,我简单概括为:外面里面

先来说说一个接口的请求到了程序里,是怎么处理的:

上图--程序处理流程

这是一个典型的MVC,由Controller接收和处理请求数据,由Service处理Model中获取的数据,再由View输出。

对不同场景,我们可以采取多种方式,在多个节点增加不同的缓存,来解决不同的问题。

比如,针对请求参数多变,返回的数据如果跟请求参数强相关,适合在“外面”(请求参数过滤之后)缓存查询到的数据。这类数据一般缓存时间短,比如缓存5分钟。主要应对相同请求参数在短时间内的重复请求。如果遇到请求攻击,即使这个缓存有效期只有1秒,也是很有效的,能挡住大量的请求。

上图--在“外面”缓存

比如,针对请求参数变化不大,返回的数据跟db中存储的数据很接近的情况,适合在“里面”缓存数据,也就是在更新db的同时更新缓存,这种情况最优的状态下,只需要读缓存就够了,不需要跟db直接交互,能大大缓解db压力。这种缓存有效期可以设置很长。

上图--在“里面”缓存

04 缓存的更新方式

说完生成,再来说说缓存的更新。缓存在生成之后,正常都不会一成不变,所以需要对缓存进行更新。

有几种更新方式:

05 redis缓存测试点

1、性能测试角度

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

缓存删除

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

缓存穿透

缓存雪崩

redis缓存服务停掉

缓存超时

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

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

2、Redis功能测试角度

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 19:12:05

黑客能让 AI 发辞职信?OpenAI 承认 Atlas 浏览器提示词注入攻击难以根治

OpenAI 在当地时间周一发布的一篇博客文章中详细阐述了该公司为增强 Atlas 的防御能力、抵御持续攻击所采取的措施,并写道:“提示词注入攻击就像网络上的诈骗和社会工程学攻击一样,几乎不可能被完全‘攻克’。”该公司坦承,ChatGP…

作者头像 李华
网站建设 2026/2/4 21:44:48

14、高速始终在线的电缆和DSL连接:家庭网络接入指南

高速始终在线的电缆和DSL连接:家庭网络接入指南 在现代生活中,互联网连接已成为必不可少的一部分。对于家庭用户来说,高速始终在线的电缆或DSL互联网连接是最佳选择。这种连接方式通常提供300 - 500Kbps的速度,性能远优于传统的拨号上网。而且,由于电缆和DSL提供始终在线…

作者头像 李华
网站建设 2026/1/30 6:51:05

Open-AutoGLM实战指南(新手必看的8大核心技巧)

第一章:Open-AutoGLM使用教程Open-AutoGLM 是一个开源的自动化自然语言处理框架,专为快速构建和部署基于 GLM 架构的语言模型应用而设计。它支持任务自动识别、输入解析、上下文管理与多轮对话能力,适用于智能客服、自动化报告生成等场景。环…

作者头像 李华
网站建设 2026/1/30 14:01:07

21、探索科技电视与网络技术的精彩世界

探索科技电视与网络技术的精彩世界 在当今数字化时代,科技的发展日新月异,深刻地影响着我们生活的方方面面。科技电视(TechTV)作为专注展示科技影响力的平台,以及丰富多样的网络技术知识,为我们打开了了解科技世界的大门。 科技电视(TechTV)的魅力 TechTV 是唯一一家…

作者头像 李华