redis与mysql一致性问题
巴扎黑
巴扎黑 2017-04-17 14:48:45
0
4
671

应用在电商购物库存场景
1、用户下单后 redis对库存id做增加(件数)
2、用户付款成功后 redis对库存id做减少(件数),同时减少mysql里的库存

问题是:
流程中出现问题,mysql可以做数据回滚,但redis不可以
除了记录日志分析外,有较好办法可以解决这个问题么

巴扎黑
巴扎黑

全部回覆(4)
刘奇

你指得MySQL回滾是交易的回滾嗎?

既然流程出問題了,那程式碼應該可以捕捉到出問題了,手動回滾redis即可。
或等流程事務成立提交後,再修改redis。

迷茫

還是事物問題。
不要把mysql操作當做一件事,redis操作當做另一件事。
要把資料增刪改當作做一件事。不論是mysql還是redis,只要有一個新增刪除出錯了,就回溯事務。 redis請使用pipeline。

迷茫

換個思路吧,從產品角度你就應該允許redis的資料是不同步的,就算redis可以持久化,在內存還沒刷到硬碟之前伺服器掛了就有丟資料的可能性,你只要保證下單的時候SKU庫存是從Mysql偵測的即可,就算他繞過了redis,也能保證最終結果是正確的

PHPzhong

mysql做底層邏輯保證,redis建議只做緩存,redis資料定期或不存在的時候 去和mysql同步。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!