Redis和MySQL如何保持数据一致性?
Java引导者
共 2136字,需浏览 5分钟
·
2022-07-05 16:13
大家好,我是磊哥。
在高并发的场景下,大量的请求直接访问Mysql很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,Mysql和Redis是两种不同的数据库,如何保证不同数据库之间数据的一致性就非常关键了。
导致数据不一致的原因
内测,首发300套,不要错过
缓存先后删除问题
不管是先写MySQL数据库,再删除Redis缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况。
先删除缓存
后删除缓存
延时双删策略
基本思路
public void write( String key, Object data ){ redis.delKey( key ); db.updateData( data ); Thread.sleep( 500 ); redis.delKey( key );} br
具体步骤
问题:这个500毫秒怎么确定的,具体该休眠多久时间呢?
设置缓存过期时间是关键点
方案缺点
异步更新缓存(基于Mysql binlog的同步机制)
整体思路
Redis更新过程
这里说的是增量,指的是mysql的update、insert、delate变更数据。
这里的消息推送工具你也可以采用别的第三方:kafka、rabbitMQ等来实现推送更新Redis!
往期推荐
内测,首发300套,不要错过
![](https://filescdn.proginn.com/488c7315a56b16ac4788994a3fc16d23/a136d1d9a8e7ef1220819083f366e9cc.webp)
![](https://filescdn.proginn.com/0f41d6297d5687e1dcef0d01919fdefb/59000c0596ed8dac1392a3a25d7da0bf.webp)
评论