教程 redis tutorial

事务

Redis 事务是一组按顺序执行的命令,确保这些命令要么全部成功执行,要么全部不执行。事务通过 MULTI、EXEC 等命令实现原子性操作。

主要命令

  • MULTI:标记事务的开始,后续的命令将被排队,直到执行 EXEC。
bash
MULTI

`

  • EXEC:执行事务队列中的所有命令,如果其中一个命令执行失败,其他命令仍然会被执行。
bash
EXEC
  • DISCARD:放弃事务,清空命令队列,不执行任何命令。
bash
DISCARD
  • WATCH:监视某个或多个键,当被监视的键发生变化时,事务会失败。
bash
  WATCH key [key ...]

工作流程

  1. 事务通过 MULTI 命令开始。
  2. 向 Redis 发送多个命令,这些命令会进入事务队列,但不会立即执行。
  3. 执行 EXEC 命令时,所有命令会按顺序执行。如果没有发生错误,事务会提交执行。
  4. 如果有任何键被 WATCH 监控,并且在事务执行之前这些键的值发生了变化,事务将自动失败。

特点与限制

  • 原子性:事务中的所有命令要么都成功执行,要么都不执行。
  • 隔离性:事务中的命令在被执行前不会被其他客户端的命令影响,直到 EXEC 被调用。
  • 没有回滚机制:一旦事务开始,所有命令会按顺序执行,不能回滚。

注意事项

  • 事务执行期间,Redis 会依次执行每个命令,但不保证命令执行的时序顺序(例如并发写操作时)。
  • 事务中的命令是批量执行的,但如果在执行期间发生错误,事务中的所有命令都会执行。
  • 使用 WATCH 可以监控某个键的变化,确保在执行事务前该键未被其他客户端修改。

应用场景

适用于需要保证操作原子性的一系列命令场景,如用户余额扣款、订单处理、批量更新等,确保在高并发环境下数据一致性。