Redis的默认事务处理模式(redis默认事务)
Redis事务性处理模式是一种定义一组要么一起执行,要么都不执行的指令序列。其机制已在Redis的默认实现中出现了许多年。在Redis事务性处理中,每一个要执行的操作都是由两个指令来完成的,第一个指令是服务器发送给客户端的“WATCH”指令,这表示服务器要求客户端在处理事务时监视指定的键;第二个指令是“MULTI”,它告诉服务器,后续指令族都要在MULTI和EXEC指令之间的指令框架中执行。
在Redis事务中,它们都共享相同的网络连接并按原子方式执行,也就是说,Redis客户端可以在单个指令序列中建立原子性保证的批量操作。客户端发出的每一个操作都会被服务器接收并加入到事务指令列表中,供客户端检查之后确认执行事务时使用,客户端操作若在这个过程中出现任何错误,就可以放弃执行,而不会对数据库中的数据产生任何影响。
Redis事务处理默认模式可以表示为:
watch key1 key2 …
Multi
command1
command2
…
exec
注意,在Redis的默认实现中,WATCH指令将监视的key和处理的命令以及当前执行的MULTI/EXEC事务序列用来实现多种拥有原子语义的操作。
例如,您可以使用以下命令来实现多个key发出一个增量计数器:
WATCH some_key
MULTI
incr some_key
get some_key
EXEC
上面的例子表明,Redis事务处理模式分为三大部分:WATCH、MULTI和EXEC。WATCH语句用于监视作为事务内操作目标的key。MULTI语句可以连接多个命令,并按原子方式来执行,而EXEC指令就是事务整体语义的表达,意为服务器端检查所监视的键的值是否发生了变化,如果发生变化则放弃本次事务,否则正常执行事务,以保证原子性语义。