应用在电商购物库存场景1、用户下单后 redis对库存id做增加(件数)2、用户付款成功后 redis对库存id做减少(件数),同时减少mysql里的库存
问题是:流程中出现问题,mysql可以做数据回滚,但redis不可以除了记录日志分析外,有较好办法可以解决这个问题么
MySQL ロールバックはトランザクション ロールバックということですか?
プロセスに問題があるため、コードで問題を検出し、手動で Redis をロールバックできる必要があります。 または、プロセス トランザクションが確立されて送信されるまで待ってから、redis を変更します。
それはまだ問題です。 mysql の操作と Redis の操作を別のものとして扱わないでください。 データの追加、削除、変更は 1 つのこととして扱う必要があります。 mysqlでもredisでも、追加や削除にエラーがある限り、トランザクションはロールバックされます。 Redis用のパイプラインを使用してください。
製品の観点から考えてみます。たとえ Redis を永続化できるとしても、メモリがハードにフラッシュされる前にサーバーがハングアップすると、データが失われる可能性があります。注文時に、たとえ Redis をバイパスしたとしても、SKU インベントリが正しいことを保証できることだけを確認する必要があります。
MySQL は、基礎となるロジック保証を提供します。Redis データは定期的に、またはキャッシュが存在しない場合にのみ MySQL と同期することをお勧めします。
MySQL ロールバックはトランザクション ロールバックということですか?
プロセスに問題があるため、コードで問題を検出し、手動で Redis をロールバックできる必要があります。
または、プロセス トランザクションが確立されて送信されるまで待ってから、redis を変更します。
それはまだ問題です。
mysql の操作と Redis の操作を別のものとして扱わないでください。
データの追加、削除、変更は 1 つのこととして扱う必要があります。 mysqlでもredisでも、追加や削除にエラーがある限り、トランザクションはロールバックされます。 Redis用のパイプラインを使用してください。
製品の観点から考えてみます。たとえ Redis を永続化できるとしても、メモリがハードにフラッシュされる前にサーバーがハングアップすると、データが失われる可能性があります。注文時に、たとえ Redis をバイパスしたとしても、SKU インベントリが正しいことを保証できることだけを確認する必要があります。
MySQL は、基礎となるロジック保証を提供します。Redis データは定期的に、またはキャッシュが存在しない場合にのみ MySQL と同期することをお勧めします。