如何保证缓存与数据库双写时的数据一致性?

发布于 2019-12-19 22:11:43
关注者
1
被浏览
1751
2 个回答
  • 面试哥
    面试哥 2020-01-08
    为面试而生,有面试问题,就找面试哥。

    合理设置缓存的过期时间。

    新增、更改、删除数据库操作时同步更新 Redis,可以使用事物机制来保证数据的一致性。

  • 面试哥
    面试哥 2019-12-19
    为面试而生,有面试问题,就找面试哥。

    一般情况下我们都是这样使用缓存的:先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。这种方式很明显会存在缓存和数据库的数据不一致的情况。

    你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?

    一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案,读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况

    串行化之后,就会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看