最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

redis缓存与数据库不一致问题

XAMPP相关 中文小张 76浏览 0评论

最近面试经常会被问到redis缓存与数据库不一致性问题,缓存穿透,雪崩等经典问题。

缓存与数据库不一致问题:

场景一:1先操作数据 2在del缓存 (操作1成功 2失败)造成数据库为new

数据,缓存为old数据。

场景二:1先删除缓存 2在写操作 在高并发请求下(请求a写操作 b读操作 b)

当a在进行2操作但还没提交成功的时候 b请求数据 先查cache miss 查db在缓存到redis上。

场景三:redis集群、主从模式 redis要进行数据同步。(主从 从数据库启动会向主数据发送SYNC命令 接受到命令会开始在后台保存快照文件和并保存快照期间接收到的命令缓存)时间延迟 造成数据不一致性。

在网上也找了不少答案,感觉比较简单实用的方法:双删加超时

在写库前后都进行del操作,并且设置合理的超时时间。最差的情况就是超时时间内不一样。当然这种情况极其少见,可能的原因就是服务宕机。此种情况可以满足绝大多数需求。 当然这种策略要考虑redis和数据库主从同步的耗时,所以在第二次删除前最好休眠一定时间,比如500毫秒,这样毫无疑问又增加了写请求的耗时。

转载请注明:XAMPP中文组官网 » redis缓存与数据库不一致问题