두 개의 데이터 저장소가 있다고 가정 해 봅시다 : MySQL (innodb) & Redis. 두 저장소에 데이터를 쓰고 트랜잭션에서 수행해야합니다. 일부 오류가 $Mysql->commit()
에 occures 경우두 개 이상의 서로 다른 데이터 저장소에 쓸 때의 트랜잭션
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
}
우리는 이미 레디 스하고 롤백 할 수없는 우리의 데이터를 가지고있다. 모범 사례는 무엇입니까?