假设我们有两个数据存储: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()
我们已经在 redis 中有我们的数据并且无法回滚它。最佳实践是什么?