MST

星途 面试题库

面试题:Redis读写分离缓存模式下高并发场景的一致性问题及解决方案

在高并发场景下,Redis与MySQL读写分离缓存模式可能会出现数据一致性问题。请详细分析可能出现的一致性问题,并提出至少两种有效的解决方案,同时说明每种方案的优缺点。
34.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

可能出现的一致性问题

  1. 缓存穿透:查询一个一定不存在的数据,由于缓存不命中,每次都会去查询数据库,若恶意大量请求,会对数据库造成压力,甚至压垮数据库。
  2. 缓存雪崩:大量缓存同时过期,导致大量请求直接访问数据库,可能使数据库瞬间压力过大而崩溃。
  3. 缓存击穿:热点数据缓存过期瞬间,大量并发请求同时访问,直接打到数据库,可能造成数据库压力剧增。

解决方案及优缺点

  1. 布隆过滤器解决缓存穿透
    • 优点:能高效判断数据是否存在,极大减少数据库查询压力,占用内存空间小,查询效率高。
    • 缺点:存在误判率,误判的数据实际不存在,但布隆过滤器会认为存在;增加了维护布隆过滤器的成本。
  2. 设置不同过期时间避免缓存雪崩
    • 优点:实现简单,能有效避免大量缓存同时过期的情况,降低数据库瞬间压力。
    • 缺点:无法精准控制缓存过期时间,可能导致部分数据在不合适的时间过期,影响业务准确性。
  3. 互斥锁解决缓存击穿
    • 优点:能有效防止高并发下热点数据过期时大量请求同时访问数据库,保证数据库正常运行。
    • 缺点:增加了锁的开销,性能有所下降;若锁的释放出现问题,可能导致死锁,影响系统可用性。