redis面试题(二)附答案

书接上回,接着分享面试题,最近开发了几个小伙伴的项目,耽误更新了,来点干货,表示歉意。大家有需求也可以找小编。

2、缓存穿击

业务通常会有几个数据会被频繁地访问,比如秒杀活动,这类被频地访问的数据被称为热点数据【当前key是一个热点key**

如果缓存中的某个热点数据过期了,此时大量的请求访问了该热点数据,就无法从缓存中读取,重建缓存不能在短时间完成,可能是一个复杂计算,例如复杂的SQL、多次IO、多个依赖等。直接访问数据库,在缓存失效的瞬间,有大量线程来重建缓存,造成后端负载加大,数据库很容易就被高并发的请求冲垮,这就是缓存击穿的问题

图片

  • 解决方案

1、 互斥锁方案

保证同一时间只允许一个线程重建缓存,未能获取互斥锁的请求,要么等待锁释放后重新读取缓存,要么就返回空值或者默认值【set(key,value,timeout)】。

猜你喜欢

转载自blog.csdn.net/weixin_40379712/article/details/130391922