redis知识点记录

事务

命令原型 时间复杂度 命令描述 返回值
MULTI   用于标记事务的开始,其后执行的命令都将被存入命令队列,直到执行EXEC时,这些命令才会被原子的执行。 始终返回OK
EXEC   执行在一个事务内命令队列中的所有命令,同时将当前连接的状态恢复为正常状态,即非事务状态。如果在事务中执行了WATCH命令,那么只有当WATCH所监控的Keys没有被修改的前提下,EXEC命令才能执行事务队列中的所有命令,否则EXEC将放弃当前事务中的所有命令。 原子性的返回事务中各条命令的返回结果。如果在事务中使用了WATCH,一旦事务被放弃,EXEC将返回NULL-multi-bulk回复。
DISCARD   回滚事务队列中的所有命令,同时再将当前连接的状态恢复为正常状态,即非事务状态。如果WATCH命令被使用,该命令将UNWATCH所有的Keys。 始终返回OK。
WATCHkey [key ...] O(1) 在MULTI命令执行之前,可以指定待监控的Keys,然而在执行EXEC之前,如果被监控的Keys发生修改,EXEC将放弃执行该事务队列中的所有命令。 始终返回OK。
UNWATCH O(1) 取消当前事务中指定监控的Keys,如果执行了EXEC或DISCARD命令,则无需再手工执行该命令了,因为在此之后,事务中所有被监控的Keys都将自动取消。 始终返回OK。


multi

127.0.0.1:6379>  multi
OK
127.0.0.1:6379> set a 3
QUEUED
127.0.0.1:6379>  lpop a
QUEUED
127.0.0.1:6379>  set a 4
QUEUED
127.0.0.1:6379> get a
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) OK
4) "4"
127.0.0.1:6379> get a
"4"

回滚 discard

127.0.0.1:6379> get a
"4"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a 5
QUEUED
127.0.0.1:6379> discard     # 
OK
127.0.0.1:6379> get a     
"4"

watch

客户端1

127.0.0.1:6379> get a
"4"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr a   # 此时,在另一个客户端2修改值
QUEUED
127.0.0.1:6379> exec 
(nil)
127.0.0.1:6379> get a  # 失效
"3"

客户端2

127.0.0.1:6379> decr a
(integer) 3

猜你喜欢

转载自blog.csdn.net/qq_34964399/article/details/79819688