Redis 提供了简单的事务功能,通过 MULTI、EXEC、WATCH 等命令来实现
- MULTI:将一个事务的开始标记为“正在执行中”,此后的所有命令都会被加入事务队列中,但不会立即执行。
- EXEC:执行事务队列中的所有命令。如果所有命令都成功执行,那么事务就成功了。如果有命令执行失败,那么事务就会回滚,所有已经执行的命令都会被撤销。
- WATCH:监视一个或多个键,如果这些键在事务执行期间被其他客户端修改,那么事务就会失败。
以下是一个 Redis 事务的示例:
> MULTI OK > SET mykey value OK > INCR mycounter (integer) 1 > EXEC 1) "OK" 2) "OK" 3) (integer) 1
在这个示例中,我们首先使用 MULTI 命令开始一个事务,然后将 mykey 设置为 value,将 mycounter 自增 1,最后使用 EXEC 命令执行事务。如果在这个过程中,mykey 或 mycounter 被其他客户端修改,那么事务就会失败,所有已经执行的命令都会被撤销。
需要注意的是,Redis 的事务并不支持回滚操作,如果事务中的某个命令执行失败,那么事务就会回滚,所有已经执行的命令都会被撤销。此外,Redis 的事务也不支持隔离性,事务中的命令可能会被其他客户端中断。因此,Redis 的事务只适用于简单的、原子性的操作,不适用于复杂的、需要保证一致性的操作。