首页 > 数据库 >redis缓存测试

redis缓存测试

时间:2023-03-14 19:55:25浏览次数:37  
标签:缓存 redis DB Redis 校验 测试 是否 数据

为什么要使用缓存?

当然是为了快和省。

快是因为业务系统的数据处理结果暂时存在内存中,下次访问时直接从内存取出,所以会很快。省是节省数据的处理流程及服务器的资源消耗。

所以,什么时候使用缓存呢?

当业务出现性能瓶颈时(比如 QPS 较高/对 RT 有要求或服务器/DB 性能较差),可以考虑使用缓存来提升系统性能。

Redis 缓存怎么用?

Redis 一般和其他数据库(如:MySQL)搭配使用,用来减轻后端数据库的压力。

 

 

Redis 会把 MySQL 中经常被查询的数据缓存起来,这样当用户来访问的时候,直接从 Redis 中获取缓存的数据就可以了。

如果 Redis 中没有用户所要查询的数据,就会去 MySQL 查询,当数据返回给客户端时,同时也会将数据缓存到 Redis 中,下次就可以直接从 Redis 中获取了。

确认缓存的更新策略:
先更新数据库,再更新缓存;
先更新缓存,再更新数据库;
先淘汰缓存,再更新数据库;
先更新数据库,再淘汰缓存(推荐)

一、校验缓存的正确性
验证基本功能
缓存增加:
增加缓存,校验功能和数据是否正确,DB 中的数据跟 Redis 是否一致,缓存过期时间与设计是否一致;
缓存更新:
更新缓存,校验功能和数据是否正确,DB 中的数据跟 Redis 是否一致;缓存过期时间与设计是否一致;
对同一条数据并发执行更新和查询操作,校验功能和数据是否正确,DB 中的数据跟 Redis 是否一致;缓存过期时间与设计是否一致;
缓存删除:
删除缓存,校验功能和数据是否正确,再次请求,缓存是否被正确写入,DB 中的数据跟 Redis 是否一致;
缓存过期:
设置 Redis 过期时间,校验缓存是否正常过期失效。再次写入缓存,缓存过期时间被更新。(可通过修改服务器时间或手动修改缓存的 TTL)
缓存读取:
校验数据在缓存和 DB 中都存在时,系统功能是否正常;
校验数据在 DB 存在,但缓存中不存在时,系统功能是否正常;
校验数据在缓存和 DB 中都不存在时,系统功能是否正常;
验证 DB 返回的数据异常时,没有去缓存;

二、验证特殊场景
缓存超时:
校验缓存查询达到超时时间后,未返回指定的数据,对系统的影响。
缓存穿透:
不断查询一个 DB 和缓存中一定不存在的数据,验证返回数据为空。
缓存雪崩:
校验缓存是否采用了相同的过期时间。如果缓存大指量同时失效,验证系统功能是否正常,性能指标是否正常。
缓存击穿:
缓存中的数据没有人查询过 ,第一次就大并发的访问;
缓存中的某条数据刚好失效后,就进行大并发访问,校验功能是否正常,各项性能指标是否正常。
缓存预热:
大批量缓存在同一时间点过期,验证缓存预热耗时及预热时机。
在缓存预热期间请求更新接口和查询接口,验证返回数据的正确性。
缓存上限:
校验缓存淘汰参数配置与预期一致:增加缓存至达到 maxmemory 限制时(可修改 redis.conf 配置文件中配置的最大可用内存值),再次请求查询,数据返回正确,且缓存淘汰正确。
缓存停服:
校验关闭缓存服务后,系统功能和性能的运行情况。
验证重启 Redis 服务后,请求查询返回的数据正确,DB 中的数据跟 Redis 一致。
测试并发:
并发请求缓存中有的数据,校验返回数据是否正确,各项性能指标是否正常。
并发请求缓存中没有但 DB 中有的数据,校验返回数据是否正确,各项性能指标是否正常。
并发请求缓存中没有 DB 中也没有的数据,校验返回数据是否为空,各项性能指标是否正常。

一般测试是结合redis可视化工具进行验证,如开源免费的QuickRedis

 

标签:缓存,redis,DB,Redis,校验,测试,是否,数据
From: https://www.cnblogs.com/demaria/p/17216104.html

相关文章

  • 性能测试从需求分析开始
    转载:https://www.cnblogs.com/imyalost/p/8956808.html一、产品需求 1、业务场景:一个问卷调查的功能,然后产品和业务会不定时通过前端界面去根据筛选条件查询相关问卷问......
  • NOI春季测试游记
    Day-20本来以为不能报名,但听说其他初中组织人参加,遂报名。某人试图21天学通C++Day-20~-2刷一些题,并学了大量新知识如DP。但是显然不够使我AKDayn(-15≤n≤-5)在......
  • 前端性能优化——采用高效的缓存策略提供静态资源
    前端性能优化——采用高效的缓存策略提供静态资源一、发现性能问题通过Chrome开发者工具的Lighthouse工具对目标站点的某个页面进行分析,其生成的报告如图所示:由分......
  • 设置npm全局安装及缓存路径以及node.js环境配置
    安装目录下新建如下2个目录node_cache【缓存日志目录】node_module【默认安装目录】npmconfigsetprefix"D:\NodeJs\node_global"npmconfigsetcache"D:\No......
  • 测试
    这是一个测试做测试#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;#defineendl"\n"structpos{intday,night;};boolcmp(posa,p......
  • 阿里P6测试总监分享,这份《接口自动化测试》总结,让我成功入门接口自动化测试...
    昨晚在某个测试交流群,听了一个测试老司机分享接口自动化测试的内容,对接口自动化有了更深的一些认识,也为接下来公司的接口自动化实施,提供了更多的思路。这篇文章,就说说功能......
  • 缓存原理
    Redis属于单线程还是多线程?Redis是单线程的,主要是指Redis的网络I/O线程,以及键值的SET和GET等读写操作都是由一个线程来完成的但Redis的持久化、集群同步等操......
  • 【2023自动化测试基础知识】什么是自动化测试?
    ​大家好,我是小码哥。今天主要学习自动化测试相关概念。什么是自动化测试?自动化测试是一种软件工具的应用,用于自动化由人驱动的检查和验证软件产品的手工过程。大多数......
  • Burp Suite Professional 2023.3 (macOS, Linux, Windows) - Web 应用安全、测试和扫
    BurpSuiteProfessional,Test,find,andexploitvulnerabilities.请访问原文链接:https://sysin.org/blog/burp-suite-pro-2023/,查看最新版。原创作品,转载请保留出处。......
  • CheckPoint R81.20 版本测试
    测试网络拓扑图:本测试采用虚拟化的方式进行分布式部署:Smartcenter硬件配置:CPU 4CRAM 16GDisk  120GGateway硬件配置:CPU 8CRAM 32GDisk  120G初......