欢迎光临散文网 会员登陆 & 注册

千锋教育2023版Java面试宝典Java面试200题(含美团、字节、阿里大厂真

2023-07-18 21:12 作者:尘云浮地  | 我要投稿

Redis怎么保证缓存和数据库数据的一致性?

1、淘汰缓存

数据如果为较为复杂的数据时,进行缓存的更新操作就会变得异常复杂,因此一般推荐选择淘汰缓存,而不是更新缓存。|I

2、选择先淘汰缓存,再更新数据库

假如先更新数据库,再淘汰缓存,如果淘汰缓存失败,那么后面的请求都会得到脏数据,直至缓存过期。

假如先淘汰缓存再更新数据库,如果更新数据库失败,只会产生一次缓存穿透,相比较而言,后者对业务则没有本质上的影响。

3、延时双删策略

如下场景:同时有一个请求A进行更新操作,另一个请求B进行查询操作。请求A进行写操作,删除缓存

请求B查询发现缓存不存在请求B去数据库查询得到旧值请求B将旧值写入缓存

请求A将新值写入数据库

次数便出现了数据不一致问题。采用延时双删策略得以解决。

4、数据库读写分离的场景

两个请求,一个请求A进行更新操作,另一个请求B进行查询操作。·请求A进行写操作,删除缓存

·请求A将数据写入数据库了,

·请求B查询缓存发现,缓存没有值1

·请求B去从库查询,这时,还没有完成主从同步,因此查询到的是旧值·请求B将旧值写入缓存

·数据库完成主从同步,从库变为新值依旧采用延时双删策略解决此问题。


千锋教育2023版Java面试宝典Java面试200题(含美团、字节、阿里大厂真的评论 (共 条)

分享到微博请遵守国家法律