Redis 面试常见问题知识点总结

背景描述

在面试过程中,缓存雪崩缓存穿透缓存击穿分布式锁 等问题是 Redis 的常见问题,本文根据 马士兵教育 公开课内容整理而成,主要总结了上述面试题一些回答思路。

总结内容

缓存雪崩

Redis 中的热点数据集中过期导致 MySQL 在某一时刻承受很大的压力,也有可能是因为 Redis 服务器宕机所致。

  • 数据集中过期:在数据过期时间后加上一个随机值,不要让数据同时过期;

  • Redis 宕机问题:a、设置多级缓存,b、搭建 Redis 集群,防止单点问题。

缓存穿透

如果客户端发送的请求,查询的数据,在 Redis 中都查不到,那么缓存就失去意义了。这种情况多数是由恶意用户伪造请求参数,导致 Redis 缓存查不到数据而失效。

  • BloomFilter(布隆过滤器);
  • 使用分布式锁解决缓存穿透,对于缓存中不存在的数据,在访问 MySQL 数据库时需要抢占分布式锁。

缓存击穿

Redis 中有一条热点数据,过期之后,MySQL 承接了大量的请求。

一般这种情况在实际工作中出现较少,很少会只有一条热点数据。

分布式锁

Redis 实现分布式锁的一些问题:

  • 死锁 –> 有过期时间 –> 乱入锁 –> 增大有效期时间 –> 效率低,吞吐量下降;

  • 资源浪费。

参考资料

感谢您的阅读,本文由 董宗磊的博客 版权所有。如若转载,请注明出处:董宗磊的博客(https://dongzl.github.io/2020/03/22/18-Redis-Interview-knowledge/
BloomFilter 实现原理及使用
CountDownLatch 基于 AQS 共享锁模式实现原理分析