文章详情页
redis与mysql一致性问题
浏览:285日期:2022-06-21 15:48:16
问题描述
应用在电商购物库存场景1、用户下单后 redis对库存id做增加(件数)2、用户付款成功后 redis对库存id做减少(件数),同时减少mysql里的库存
问题是:流程中出现问题,mysql可以做数据回滚,但redis不可以除了记录日志分析外,有较好办法可以解决这个问题么
问题解答
回答1:你指得MySQL回滚是事务的回滚吗?
既然流程出问题了,那代码应该能捕获到出问题了,手动回滚redis即可。或者等流程事务成立提交后,再修改redis。
回答2:还是事物问题。不要把mysql操作当做一件事,redis操作当做另一件事。要把数据增删改当做一件事。不论是mysql还是redis,只要有一个添加删除出错了,就回滚事务。redis请使用pipeline。
回答3:换个思路吧,从产品角度你就应该允许redis的数据是不同步的,就算redis可以持久化,在内存还没有刷到硬盘之前服务器挂了就有丢数据的可能性,你只要保证下单的时候SKU库存是从Mysql检测的即可,就算他绕过了redis,也能保证最终结果是正确的
回答4:mysql做底层逻辑保证,redis建议只做缓存,redis数据定期或者不存在的时候 去和mysql同步。
相关文章:
1. javascript - 粘贴一段带有图片和文字的内容,如何使用js实现获取图片并上传到服务器?2. PHP怎么升级?升级会导致老的网站程序不能用吗?3. javascript - c#如何向js传值4. javascript - 获取标签中的字符串5. android-studio - android app微信登录一定要申请了登录权限才能测试?6. 网页爬虫 - 关于Python的编码与解码问题7. 一道关于 JavaScript 中 this 的题目的困惑8. java - 请教一个spring定时任务的问题9. javascript - vue2如何动态生成checkbox默认选中,获取数据10. mysql优化 - mysql 分页查询优化。
排行榜

网公网安备