参考答案
结论:Redis预检(如扣减库存)成功但数据库扣减失败,必须补偿回滚或保证最终一致,避免库存不准确。核心处理:1.立即回滚Redis操作:数据库事务失败则对Redis执行反向操作(如DECR回加库存);2.若回滚失败,记录日志并告警,引入本地消息表或事务消息队列重试;3.设计上采用Redis预扣+数据库事务非强一致,依靠重试和核对兜底。原理:预检是乐观锁思路,数据库是真实落库;失败因网络或DB异常,通过补偿保证不超卖且不丢库存。示例:下单时Redis DECR库存成功,MySQL update失败,则Redis INCR恢复。