说明
- Redis中的事务与传统关系型数据库(如mysql)的事务是不同的。
- Redis中的事务是一组命令的集合,事务与命令都是最小执行单位,原理是先将属于一个事务的命令发送给Redis,然后Redis一次执行这些命令。
- Redis的事务可以保证一个事务内的命令一次执行而不被其他命令插入影响。
事物实现
Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕才去处理其他客户端的命令请求。
具体流程为:
1. 事务开始(以MULTI为标志)
2. 命令入队(命令一次进入队列)
3. 事务执行(通过EXEC执行)
例子:
MULTI命令
MULTI命令将执行该命令的客户端从非事务状态切换至事务状态。
命令入队
- 当一个客户端处于非事务状态时,这个客户端发送的命令会立即被服务器执行。