对于缓存击穿,雪崩,穿透的测试

1.缓存穿透

​ 测试方法:通过jmeter模拟多次重复调用,单线程重复调用,查看日志结果,看执行并发请求后,所有的请求是否走向了数据库

​ 单线程重复调用;

​ 当数据库为空的时候,将缓存赋默认值,后续查询都将走向缓存,减少了数据库的压力,为缓存赋值为empty,第一次查询数据库为空的时候,其后的查询全部打向缓存中。

​ 设置完成之后再次执行并发测试,每次查询请求都会命中缓存,之后的每这样就能够有效的防止缓存穿透的问题

2.缓存击穿

​ 测试方法:对某个Key有大量的并发请求,然后从缓存中删除这个热key,模拟热key失效的场景,这个时候大量的请求就会打到数据库上,把数据库压垮。

​ 测试步骤:

​ 1.例如查询某个人的人名的请求,查询完成后会将数据加载到缓存中。

​ 2.再次查询这个人的人名,命中缓存。

​ 3.命中后持续并发(50并发请求),这时候请求全部命中缓存。

​ 4.将这个人的人名从缓存中进行删除,以模拟缓存失效的情况。

​ 5.50并发请求 ,这时候大量的数据请求打向数据库,缓存击穿。(如果这里加上分布式锁应该如何进行测试)

​ 测试方法二:

​ 在设置默认缓存的基础上,进行加锁处理操作,只有拿到第一个线程去请求数据库,然后插入缓存,每次拿到锁得时候 都需要查一下缓存中有没有。

​ 进行设置之后再次查看日志,查看请求是否都命中了缓存,这样能够有效的防止缓存击穿。

3.缓存雪崩

​ 测试方法:对多个使用到的缓存的接口进行并发调用,并且设置这些缓存已经过期(也就是删除缓存),调用这些接口查询缓存时无数据,此时去查询数据库,数据库的压力增大,耗时增加。

​ 单线程多接口重复调用;

​ 测试方法二:

​ 为接口增加限流操作,就是当接口频繁调用的时候,增加缓存,设置一个时间,比如是3S,3S内处理一定次数的请求,超过这个接口的限制次数就会直接返回结果,不做任何处理。

4.测试指标(通过标准)(准出原则)

  • 模拟缓存穿透场景,每个不存在的数据都只执行一次数据库查询,之后的请求都命中了缓存,有效防止了缓存穿透的问题。
  • 模拟缓存雪崩场景,每个缓存失效的数据都只执行一次数据库查询并设置缓存,之后的请求都命中了缓存。
  • 模拟缓存击穿场景,缓存失效的那个数据只有一个请求执行了数据库查询并设置缓存,其余的请求都命中缓存。

5.适用场景

  • 秒杀活动

  • 双11,双12大促

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值