Redis面试题

Redis面试题

Redis缓存与数据库的一致性

为什么会出现缓存与数据库不一致的情况

  1. 在客户端查询类的操作中,程序会优先读取Redis缓存数据,如果缓存数据不存在,则从数据库中查询数据,并写入缓存。
  2. 在查询和更新并发的操作中,当有一个客户端执行更新操作删除了Redis 缓存数据后继续修改数据库数据过程中出现了延迟或错误,此时当有一个客户端查询数据时,就会从数据库中查询数据,并写入缓存(老的数据)。

最终一致性(延迟双杀

最终一致性是指,在更新操作时,在更新前删除缓存数据,在更新后再 延迟删除缓存数据【防止并发时其他请求写入缓存数据】双删)。进行两次操作,最终只会出现一次数据不一致的情况

缓存删除失败的情况

  • 利用mq来进行监听删除结果 删除失败后进行重试 缺点 业务代码耦合高
  • 利用阿里的开源框架Canal主要用途时基于MySQL数据库增量日志解析,提供增量数据订阅和消费

强一致性

  • 强一致性是指,无论如何都保证数据一致性。需要在更新操作时,加入锁,防止多个客户端同时更新数据。
  • 加入锁后,影响系统吞吐量,且容易产生死锁。不建议使用

分布式锁超时,但任务没处理完

  • 使用Watchdog(看门狗)为任务无限续期
  • 如果是大任务,需要将任务拆分 进行分段处理
  • 兜底方法:幂等+合理的过期时间
上次更新 2026/3/6 20:42:13
AI问答