缓存测试
Redis缓存介绍
——内存型键值对(key-value)数据库
——Redis是高性能key-value,内存、数据持久化能保存到磁盘,重启可以保存
——高并发场景存储中间件
——缓存热点数据,减少DB的请求IO
——String, Hash,List,Set,Zset
——和DB配合使用
——分布式锁,全局ID,计数器,限流,消息队列,购物车等场景
——数据库的热点数据,在应用服务器集群中有一级缓存,在缓存服务集群中有二级缓存
——不适用于频繁需要修改的数据
PS:部分场景可能存在查询缓存时,如缓存无数据,可能会直接返回空数据给客户端,不再去查询DB;
缓存的测试
使用场景评审
1缓存使用场景的评审:
- 评估业务场景是否真的需要缓存;
2评估缓存与DB短期的数据短期暂不一致对业务带来的影响;
3键值规范设计是否合理:
- 请考缓存设计KEY-VALU的规范
4业务场景中缓存模式的选择:
参考缓存模式的选择
5缓存的更新策略:
- 是否存在并发场景,是否在并发场景下出现脏数据的读
- 参考缓存的更新策略,一般推荐先更新DB,再淘汰缓存
6业务使用的内存空间大小是否在最近的增长时有内存不够风险:
7评估缓存时间设置的合理性;
缓存的功能测试
缓存的特殊场景
1 缓存超时:
验证缓存查询达到超时后,未返回指定的数据,对系统的影响;强弱依赖
2 缓存穿透
不断查询一个DB和缓存中一定不存在的数据,验证返回数据为空;
3 缓存雪崩:
验证缓存 是否采用了相同的过期时间,如果缓存 大量在同一时间失效,验证系统功能是否正常,DB的IO读取是否正常,其系统中DB性能指标是否正常;
4 缓存击穿:
缓存中的数据没有查询过,第一次高并发访问
缓存中的一条数据刚好失效,进行高并发访问 ,校验功能是否正常,DB指标是否正常,其对应的性能指标是否正常;
5 缓存预热:
大批量缓存在同一时间点过期,验证缓存预热耗时及预期时机
在缓存预期期间请求 更新接口和查询接口,验证返回数据的正确性
6 缓存内存上限:
验证缓存淘汰参数配置与预期是否一致:增加缓存到达最大内存限制时(通过修改redis.conf配置文件中配置最大可用内存值maxmemory),再次请求查询 ,数据返回是否正确,且缓存淘汰是否正确
7 缓存服务异常
验证关闭缓存服务,系统功能和性能的表现
重启缓存,请求查询数据是否正确,DB数据与Redis数据是否一致;
6 读写并发测试:
并发请求缓存中没有但DB有的数据,验证返回数据是否正确,性能指标是否正常
并发请求缓存中和DB中也没有的数据,验证返回数据是否为空,性能指标是否正常;
7 性能测试(redis-benchmark):
单机和集群Reids的吞吐量
对比不同存储类型的性
开启和关闭持久化的吞吐量
对比调优前后的吞吐量
对比不同版本的Redis的吞吐量
缓存的监控
缓存的命中率,评估缓存设计 是否达到预期
监控CPU,内存使用率,及 CPU,内存使用异常
监控Key值过大的阀值
监控KEY是否存在频繁更新场景
监控Value读取时间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理