5

MySQL(innodb) と Redis の 2 つのデータ ストレージがあるとします。両方のストレージにデータを書き込み、トランザクションで実行する必要があります。

try {
  $Mysql->transaction();   //start mysql transaction
  $Mysql->somecommands();  //exec some sql
  $Redis->multi();         //start redis transaction
  $Redis->somecommands();  //exec some redis commands
  $Redis->exec()           //redis commit
  $Mysql->commit();        //mysql commit
} catch (Exception $e) {
  $Mysql->rollback();      //mysql rollback
  $Redis->discard();       //redis rollback
}

なんらかのエラーが発生した場合$Mysql->commit()、データは既に redis にあり、ロールバックできません。ベストプラクティスは何ですか?

4

1 に答える 1