第19章 事务
Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。
以下是一个事务执行的过程,该事务首先以一个MULTI命令为开始,接着将多个命令放入事务当中,最后由EXEC命令将这个事务提交(commit)给服务器执行:
redis> MULTI
OK
redis> SET "name" "Practical Common Lisp"
QUEUED
redis> GET "name"
QUEUED
redis> SET "author" "Peter Seibel"
QUEUED
redis> GET "author"
QUEUED
redis> EXEC
1) OK
2) "Practical Common Lisp"
3) OK
4) "Peter Seibel"
在本章接下来的内容中,我们首先会介绍Redis如何使用MULTI和EXEC命令来实现事务功能,说明事务中的多个命令是如何被保存到事务里面的,而这些命令又是如何被执行的。
在介绍了事务的实现原理之后,我们将对WATCH命令的作用进行介绍,并说明WATCH命令的实现原理。
因为事务的安全性和可靠性也是大家关注的焦点,所以本章最后将以常见的ACID性质对Redis事务的原子性、一致性、隔离性和耐久性进行说明。