MySQL与Redis缓存一致性问题

77hu尾2021-10-25 15:49

Redis就是一个使用C语言开发的数据库,为了避免使用MySQL请求过多影响性能,就会采用它。高并发场景下保持mysql与redis数据的一致性问题不容忽视。

MySQL与Redis缓存一致性问题

场景:线程A,修改数据,线程B使用数据。

1、双删策略:线程A写数据时,先删除redis的数据,然后修改mysql,之后再删除redis的数据。

问题:线程A在修改mysql的时候,线程B先读取了数据,接着线程A执行完毕,此时redis中没有数据了,接着线程B处理业务然后设置redis缓存,此时redis中的数据还是线程A修改前的数据。

2、延迟双删策略:线程A写数据时,先删除redis的数据,然后修改mysql,之后再延迟一个业务时间后删除redis的数据。

问题:该策略无法包括这个延迟时间;并且会影响系统的处理能力。

3、读写串行化:只要读和写是并发产生的就必然会存在,数据一致性问题。如果要彻底解决该问题,就要串行。该中方式会影响效率,如果采用可以做好压力测试。

使用分布式锁:影响效率

使用队列:将操作同一资源的请求,打到同一个队列中。

4、cancel:同步mysql的bin_log,更新redis。该方式也会存在延迟。

5、redis设置失效时间

以上就是“MySQL与Redis缓存一致性问题”一文,想了解更多相关内容,推荐大家一个高质量公开课,《Redis原理及应用实战》,点击下方图片立即免费领取。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享