成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

redis與mysql一致性問題

瀏覽:108日期:2022-06-21 15:48:16

問題描述

應(yīng)用在電商購(gòu)物庫(kù)存場(chǎng)景1、用戶下單后 redis對(duì)庫(kù)存id做增加(件數(shù))2、用戶付款成功后 redis對(duì)庫(kù)存id做減少(件數(shù)),同時(shí)減少mysql里的庫(kù)存

問題是:流程中出現(xiàn)問題,mysql可以做數(shù)據(jù)回滾,但redis不可以除了記錄日志分析外,有較好辦法可以解決這個(gè)問題么

問題解答

回答1:

你指得MySQL回滾是事務(wù)的回滾嗎?

既然流程出問題了,那代碼應(yīng)該能捕獲到出問題了,手動(dòng)回滾redis即可。或者等流程事務(wù)成立提交后,再修改redis。

回答2:

還是事物問題。不要把mysql操作當(dāng)做一件事,redis操作當(dāng)做另一件事。要把數(shù)據(jù)增刪改當(dāng)做一件事。不論是mysql還是redis,只要有一個(gè)添加刪除出錯(cuò)了,就回滾事務(wù)。redis請(qǐng)使用pipeline。

回答3:

換個(gè)思路吧,從產(chǎn)品角度你就應(yīng)該允許redis的數(shù)據(jù)是不同步的,就算redis可以持久化,在內(nèi)存還沒有刷到硬盤之前服務(wù)器掛了就有丟數(shù)據(jù)的可能性,你只要保證下單的時(shí)候SKU庫(kù)存是從Mysql檢測(cè)的即可,就算他繞過了redis,也能保證最終結(jié)果是正確的

回答4:

mysql做底層邏輯保證,redis建議只做緩存,redis數(shù)據(jù)定期或者不存在的時(shí)候 去和mysql同步。

相關(guān)文章: