redis面试重点------源于黑马

在这里插入图片描述
在这里插入图片描述
缓存问题三兄弟 是因为不同的原因让请求全部打到了数据库而造成的问题

什么是缓存穿透?

缓存穿透是指查询一个数据,在redis和MySQL中都不存在。也就是查询一个数据不存在的数据,导致每次请求都会到达数据库,给数据造成很大的压力。
解决方案:
1.当查询一个不存在的数据时缓存一个空数据,这样请求就只会查一次库,把流量转移到了redis中
优点:实现起来,简单方便
缺点:消耗内存,可能会造成数据短期不一致,缓存承受压力增加
2.布隆过滤器
在这里插入图片描述
在这里插入图片描述
什么是缓存击穿?
缓存击穿:某个热点key过期了,数据同步慢,导致请求全部到达数据库
解决方案
1.互斥锁
2.逻辑过期
在这里插入图片描述

什么是缓存雪崩?

缓存雪崩是在某一时间段大量的key同时过期,导致请求全部到达数据库
解决方案
在这里插入图片描述

redis和MySQL的数据同步问题,如何进行同步?

在这里插入图片描述

如果是强一致性(CP):双写一致性(修改了数据库就修改缓存),存入redis的数据肯定是读多写少的,在数据修改时,使用读写锁是一个不错的选择。
特点:强一致,低性能,代码侵入性太高
在这里插入图片描述
在这里插入图片描述

如果是可用性(AP):mq(绝大数的数据同步,AP实现都可以用mq,允许短期数据不一致,达到最终一致性即可),canal
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_56533553/article/details/130366463