怎么定位Redis缓存失效问题(缓存坏了)

问题

怎么定位 Redis 缓存失效问题(缓存坏了)?

答案解析

什么是缓存失效

简单来说就是由于各种原因导致的缓存不可用,而让原本应该打在redis的请求,直接打到了数据库上。

为什么会产生缓存失效

缓存失效对应的一般是以下这四个原因:

  • 缓存过期

如果缓存不设计过期时间,那么就永久的占据一块内存,所以通常都会为缓存设计过期时间,一旦缓存过期,缓存数据则完全失效。

  • 缓存更新

缓存的更新通常采用“淘汰策略”,一般更新完数据库之后,会直接把缓存淘汰掉,这样在下次用户请求中,如果没有在缓存中拿到信息就会去数据库读取,在向数据库读取成功之后,数据库则会反写到 redis。

但是在这个过程中,有一个极短的时间是没有缓存数据的,如果在这个极短的时间内,正好有大量的请求打进来,那么就会直接打到数据库上面。

  • Redis 异常

Redis 异常的话,自然请求也是直接全部打到了数据库,而导致数据库崩溃。

  • 网络异常

网络异常和 Redis 异常逻辑相同。

如何解决缓存失效问题

针对于由于各种情况可能产生的缓存失效问题,研发是如何解决的?通常有两种方式:

  • 降级: 禁用部分接口,开放核心接口。
  • 熔断: 禁用部分服务,开放核心服务。

很多同学看到这两种方式可能很难理解,如果禁用部分接口或服务的话,直接导致的问题就是应用的某些功能是不可用的,依然会影响到用户体验。但是其实这个过程,好比一个人被烧伤,他的手臂已经坏死,医生常常也会抛出这样两难的选择,如果不选择切除手臂,那么48小时之后,人就会因为感染而死亡。所以在这种情况下,大部分人都会选择“自断一臂”。

熔断和降级根本目的也是这个,有的用比完全瘫痪强,核心服务可用更比完全瘫痪强。

缓存失效相关的测试点

对于测试来说,除了考虑有哪些原因可能导致缓存失效,我们尽量规避外。还要检查了解到如果真的发生缓存失效的问题,研发是否有对应的解决方案,而不是缓存一失效,系统就瘫痪完全无法使用了。

比如在缓存失效下,可以使用如下的测试步骤,验证降级或者熔断功能的能力:

  1. 梳理系统中的核心服务列表(通常直接让研发给出对应列表)
  2. 梳理服务中核心接口列表(通常直接让研发给出对应列表)
  3. 模拟Redis失效,查看redis失效之后,这些核心服务和核心接口是否还能正常运行

模拟 redis 缓存失效其实比较简单。其中,直接使用命令切断 redis 和服务的网络连接是最简单的方式。比如使用IPTABLES 和 TC命令。以及阿里云的ChaosBlade命令工具也可以非常容易的实现。

总结

面试碰到这个问题,可以从以下3个角度进行回答

  • Redis 失效是什么?
  • Redis 失效的原因是什么?
  • Redis 失效研发应该在哪些方面做什么处理,以及测试是如何去测试的进行回答。
#软件测试##测试开发#
全部评论

相关推荐

就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:00
点赞 评论 收藏
分享
评论
6
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务