2
假設我們有兩個數據存儲區:MySQL(innodb)& Redis。 我們需要將一些數據寫入兩個存儲並在事務中執行。寫入兩個或更多不同數據存儲區時的事務
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()
occures我們已經有我們在Redis的,無法回滾它的數據。什麼是最佳實踐?