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 にあり、ロールバックできません。ベストプラクティスは何ですか?