当前位置: 首页 > news >正文

缓存怎么测试?

1、缓存的介绍

平时用的Redis缓存是一款高性能的内存型键值对(key-value)数据库,是高并发场景常用一款存储中间件,其主要用于:缓存热点数据,减少DB的请求IO

其场景使用主要有:分布式锁,全局ID,计数器,限流,消息队列,购物车等

2、缓存的使用

Redis存储键值对,支持5种数据类型,String, HashList,SetZset,缓存一般和DB配合使用,其缓存与DB的交互:

PS 部分场景可能存在查询缓存时,如缓存无数据,可能会直接返回空数据给客户端,不再去查询DB

3、缓存的设计

4、缓存的测试

PS: 缓存的测试可从四个唯度进行测试:

 

使用场景评审

1 缓存使用场景的评审:

  • 评估业务场景是否真的需要缓存;

2 评估缓存 DB 短期的数据短期暂不致对业务带来的影响;

3 键值规范设计是否合理:

  • 请考 缓存设计 KEY-VALU的规范

4 业务场景中缓存模式的选择:

参考 缓存模式的选择

5 缓存的更新策略:

  • 是否存在并发场景,是否在并发场景下出现脏数据的读
  • 参考缓存的更新策略,一般推荐先更新DB,再淘汰缓存

6 业务使用的空间大小是否在最近的增长时有内存不够风险:

7 评估缓存时间设置的合理性;

缓存的功能测试

 

缓存的特殊场景

1 缓存超时:

验证缓存查询达到超时后,未返回指定的数据,对系统的影响;强弱依赖

2 缓存穿透

不断查询一个DB和缓存中一定不存在的数据,验证返回数据为空;

3 缓存雪崩:

验证缓存 是否采用了相同的过期时间,如果缓存 大量在同一时间失效,验证系统功能是否正常,DBIO读取是否正常,其系统中DB性能指标是否正常;

4 缓存击穿:

缓存中的数据没有查询过,第一次高并发访问

缓存中的一条数据刚好失效,进行高并发访问 ,校验功能是否正常,DB指标是否正常,其对应的性能指标是否正常;

5 缓存预热:

大批量缓存在同一时间点过期,验证缓存预热耗时及预期时机

在缓存预期期间请求 更新接口和查询接口,验证返回数据的正确性

6 缓存内存上限:

验证缓存淘汰参数配置与预期是否一致:增加缓存到达最大内存限制时(通过修改redis.conf配置文件中配置最大可用内存值maxmemory),再次请求查询 ,数据返回是否正确,且缓存淘汰是否正确

7 缓存服务异常

验证关闭缓存服务,系统功能和性能的表现

重启缓存,请求查询数据是否正确,DB数据与Redis数据是否一致;

6 读写并发测试:

并发请求缓存中的有的数据,验证返回数据是否正确,性能指标是否正常

并发请求缓存中没有但DB有的数据,验证返回数据是否正确,性能指标是否正常

并发请求缓存中和DB中也没有的数据,验证返回数据是否为空,性能指标是否正常;

7 性能测试(redis-benchmark)

单机和集群Reids的吞吐量

对比不同存储类型的性

开启和关闭持久化的吞吐量

对比调优前后的吞吐量

对比不同版本的Redis的吞吐量

缓存 的监控

缓存的命中率,评估缓存设计 是否达到预期

监控CPU,内存使用率,及 CPU,内存使用异常

监控Key值过大的阀值

监控KEY是否存在频繁更新场景

监控Value读取时间

 

相关文章:

  • 智能控制理论及应用 王耀南等编著
  • 修改centos中Mysql( mariadb)数据默认存储位置
  • 神经网络编程教程入门课,人工神经网络编程内容
  • 零基础学Java有哪些必看书?推荐这5本
  • Python语句和循环
  • 阿里巴巴微服务核心手册:Spring Boot+Spring cloud+Dubbo
  • ssm基于微信小程序的社区老人健康管理服务系统的设计与实现毕业设计源码011513
  • opencv-python之位平面分解与数字水印
  • 技术分享 | 黑盒测试方法论—等价类
  • 医疗信息管理系统(HIS)——>业务介绍
  • 电脑截图怎么转换成文字?学会这个方法,轻松实现
  • 基于Redis手工实现分布式锁
  • 学历证书查询 易语言代码
  • ssm小型物流信息系统毕业设计源码071146
  • Windows使用命令查看端口号占用情况并关闭进程
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • interface和setter,getter
  • javascript 总结(常用工具类的封装)
  • JavaScript服务器推送技术之 WebSocket
  • Java读取Properties文件的六种方法
  • JS笔记四:作用域、变量(函数)提升
  • Kibana配置logstash,报表一体化
  • log4j2输出到kafka
  • Lsb图片隐写
  • uni-app项目数字滚动
  • 工作手记之html2canvas使用概述
  • 问题之ssh中Host key verification failed的解决
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #define 用法
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (23)Linux的软硬连接
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (搬运以学习)flask 上下文的实现
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)WLAN定义和基本架构转
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • **python多态
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET CLR Hosting 简介
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net Memory Profiler的使用举例
  • .NET开源快速、强大、免费的电子表格组件
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net实现客户区延伸至至非客户区
  • .NET项目中存在多个web.config文件时的加载顺序
  • @RequestMapping 的作用是什么?
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [20150707]外部表与rowid.txt