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

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

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

巴扎黑
巴扎黑

全員に返信(4)
刘奇

MySQL ロールバックはトランザクション ロールバックということですか?

プロセスに問題があるため、コードで問題を検出し、手動で Redis をロールバックできる必要があります。
または、プロセス トランザクションが確立されて送信されるまで待ってから、redis を変更します。

いいねを押す +0
迷茫

それはまだ問題です。
mysql の操作と Redis の操作を別のものとして扱わないでください。
データの追加、削除、変更は 1 つのこととして扱う必要があります。 mysqlでもredisでも、追加や削除にエラーがある限り、トランザクションはロールバックされます。 Redis用のパイプラインを使用してください。

いいねを押す +0
迷茫

製品の観点から考えてみます。たとえ Redis を永続化できるとしても、メモリがハードにフラッシュされる前にサーバーがハングアップすると、データが失われる可能性があります。注文時に、たとえ Redis をバイパスしたとしても、SKU インベントリが正しいことを保証できることだけを確認する必要があります。

いいねを押す +0
PHPzhong

MySQL は、基礎となるロジック保証を提供します。Redis データは定期的に、またはキャッシュが存在しない場合にのみ MySQL と同期することをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート