国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

redis與mysql一致性問題

瀏覽:90日期: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同步。

相關文章:
主站蜘蛛池模板: 留坝县| 尉犁县| 富宁县| 盐池县| 许昌县| 莱州市| 稷山县| 江口县| 淮北市| 临颍县| 南川市| 通化市| 临洮县| 上栗县| 西乡县| 和龙市| 清涧县| 永丰县| 西盟| 咸宁市| 霍山县| 大冶市| 海兴县| 安宁市| 荥阳市| 万荣县| 冷水江市| 新余市| 惠东县| 龙里县| 鄂尔多斯市| 安岳县| 霸州市| 田东县| 侯马市| 广安市| 高淳县| 白河县| 萝北县| 济阳县| 英吉沙县|