美文网首页
db 和 mysql 何时数据会不一致?如何解决

db 和 mysql 何时数据会不一致?如何解决

作者: swoft_ | 来源:发表于2019-08-26 00:56 被阅读0次

    起因

    先删除redis 后操作数据库

    先删除redis之后,还没有修改数据库。另外一个进程过来之后,查看redis中没有值,于是读取数据库中老的值,写到缓存中去。这个时候数据库就和缓存不一致了。

    同样道理,先写数据库,删除缓存。写入之后,宕机了,导致删除失败。重启之后导致数据库和缓存数据不一致。

    因为写和读是并发的,没法保证顺序,就会出现缓存和数据库的数据不一致的问题。

    如何解决?

    合理设置过期时间,保证最终一致性

    根据业务,合理设置时间。业务能够承受多长时间不一致的场景。保证最终一致性即可。

    采用双删策略

    删除redis 写入数据库 删除redis (多进行一步操作,即可解决)

    异步更新缓存(基于订阅binlog的同步机制)

    增量+全量
    一个是全量(将全部数据一次写入到redis)
    一个是增量(实时更新)

    本地事务表+消息队列

    相关文章

      网友评论

          本文标题:db 和 mysql 何时数据会不一致?如何解决

          本文链接:https://www.haomeiwen.com/subject/olslectx.html