一、高频面试题
- Redis缓存与数据库数据不一致的原因有哪些?
- 更新顺序问题:在读写并发场景下,若先更新缓存后更新数据库,此时其他读请求获取到的是旧的缓存数据;若先更新数据库后更新缓存,在更新缓存前其他读请求获取到的是旧数据,都可能导致数据不一致。
- 缓存失效异常:缓存设置了过期时间,当缓存过期后,后续读请求从数据库读取新数据,但在写入缓存过程中出现异常,导致缓存未及时更新,引发数据不一致。
- 并发操作冲突:多个进程或线程同时对缓存和数据库进行读写操作,没有合理的并发控制机制,容易造成数据不一致。例如,两个线程同时检测到缓存失效,都从数据库读取数据并写入缓存,后写入的覆盖先写入的,导致缓存数据与数据库最新数据不一致。
- 如何排查Redis与数据库数据不一致问题?
- 对比校验:定期通过脚本或工具,对Redis缓存和数据库中的关键数据进行全量或抽样对比,找出不一致的数据。
- 日志分析:查看应用程序、Redis和数据库的