当前位置:   article > 正文

如何保证Redis和数据库数据一致性

如何保证Redis和数据库数据一致性

修改数据库

当出现修改的请求时,建议直接将redis的数据清空,待之后客户查询不到时再向磁盘(一般是配合mysql),将数据存放到缓存中来。而不是直接进行redis的修改。因为清空相比修改更简单。

那么针对修改数据有两种手段。一是先操作redis,一是先操作mysql。

先操作redis

可能出现的问题:

假设此时有两个线程,一个线程修改了数据库的内容。那么会先和redis发起通信。会把redis的数据清空。之后向数据库进行修改操作。但是如果在这个阶段,出现了网络波动。导致redis没来得及和数据库交互。而同时又有一个线程想要读取数据。那么就会读到修改前的旧数据了。导致数据不一致问题。

如何解决:

等到数据库将新的数据返回给redis之后,再将数据清空。保证了redis里不会有旧的数据了,虽然有加锁保证强一致性的操作,但是这样会大大影响效率。不建议。

先操作数据库

当线程1发起修改操作的请求给数据库后。数据库会进行修改并返回给redis,要求redis删除数据。如果在数据库同步数据之前,有线程2进行读操作,那么可能会读到旧数据。但是这个手段保证了最终的数据一致性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/402008
推荐阅读
相关标签
  

闽ICP备14008679号