接口加了缓存之后如何验证缓存是否有效

简介: 在项目中没有必要每次请求都查询数据库的情况就可以使用缓存,让每次请求先查询缓存,如果命中,就直接返回缓存结果,如果没有命中,再查询数据库, 并将查询结果放入缓存,下次请求时查询缓存命中,直接返回结果,就不用再次查询数据库。

什么是缓存?

  在项目中没有必要每次请求都查询数据库的情况就可以使用缓存,让每次请求先查询缓存,如果命中,就直接返回缓存结果,如果没有命中,再查询数据库, 并将查询结果放入缓存,下次请求时查询缓存命中,直接返回结果,就不用再次查询数据库。

缓存的作用?

       缓解数据库压力,提升接口响应速率。

       比如一个接口A,功能是根据指定条件查询数据库里满足要求的数据,返回给客户端。简单的理解 ,不加缓存,我和你用同样的查询条件去查 ,每请求一次接口,就查询一次数据库,因此查的人多了 ,对数据库的压力很大 。


微信图片_20220113222334.png


加入缓存后,用户第一次调用接口,先检查缓存中是否有对应数据,命中缓存后直接返回,没有的话再查数据库,从数据库查到数据后,存入缓存中,再返回。下次再查询时,就可以直接从缓存中读取数据。


使用缓存有啥注意事项?

1、并发量大的时候,使用缓存效果才明显,但是如果接口进行数据写入操作的比率远远比读写的多的话,数据写入可以考虑使用分库分表,数据读取加缓存即可。

2、对于数据一致性要求比较高的,比如项目设计到金钱等重要数据,且数据频繁发生变化,不允许存在一点差异的 ,在这种情况下,如果要使用缓存,是技术方案要求比较高。


作为测试人员,如何验证接口缓存是否正确?

我能想到的测试点如下:

1、检查响应时间是否有明显提升

2、用相同的查询条件去查,得到的数据是否始终一致

3、监控数据库是否有触发执行sql

4、把数据库的数据修改一下 ,然后验证是查的缓存还是数据库 ,不过这个得确认缓存失效的时间,以及源数据变更后,是否有做什么机制自动刷新缓存的数据或者使缓存的数据失效

5、手动修改缓存中的数据,再调用接口查询,查看是否已缓存中的数据进行返回

6、分享一个之前在测试过程中,接口设置缓存的key值不合理导致的bug:缓存key设置不合理导致的bug


缓存在工作中是很常见的,作为测试的你学会如何去开展测试了吗?

相关文章
|
5月前
|
缓存 Java
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
|
5月前
|
存储 缓存 NoSQL
在 Go 中使用接口进行灵活缓存
在 Go 中使用接口进行灵活缓存
|
5月前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
98 0
|
8月前
|
缓存 NoSQL Java
用好缓存,让你的接口速度飞起来
本文是关于接口性能优化,特别是通过缓存来提升接口响应速度的探讨。作者是一名有六年经验的Java后端开发者,分享了自己避免线上系统因代码崩溃造成资损的经验,主要归功于业务的简单性、遵循代码规约和积累的实用技巧。文章重点讲解了缓存的两个方面:缓存预热(包括定时任务和启动预热)和缓存层次化(多级缓存和热点数据缓存),并提供了如何用代码实现这些思路的示例。作者还介绍了自定义缓存处理器的设计和实现,包括接口和抽象类的定义,以及使用函数式编程实现的缓存查询模板。最后提醒,缓存虽有益但需谨慎使用,应根据业务需求和数据特征定制策略。
180 1
|
8月前
|
存储 缓存 Java
探秘MyBatis缓存原理:Cache接口与实现类源码分析
探秘MyBatis缓存原理:Cache接口与实现类源码分析
119 2
探秘MyBatis缓存原理:Cache接口与实现类源码分析
|
8月前
|
缓存 NoSQL Java
springboot集成图片验证+redis缓存一步到位2
springboot集成图片验证+redis缓存一步到位2
|
8月前
|
缓存 NoSQL Java
springboot集成图片验证+redis缓存一步到位
springboot集成图片验证+redis缓存一步到位
|
8月前
|
缓存 NoSQL Apache
Shiro - 缓存管理与CacheManagerAware接口
Shiro - 缓存管理与CacheManagerAware接口
137 0
|
缓存 NoSQL 测试技术
实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
98 0
|
SQL 缓存 Java
Mybatis一二级缓存的实验验证
Mybatis提供了一级缓存和二级缓存,本文通过实验去介绍如何去了解这两个缓存的概念,具体使用先不做评论。
153 0