Redis-事务

简介

Redis事务可以一次执行多个命令。

  • 批量操作在发送 EXEC 命令前被放入队列缓存。

  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。

  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

事务从开始到执行会经历以下三个阶段:

  • 开始事务

  • 命令入队

  • 执行事务

与MySQL的事务相比,Redis的事务是没有原子性的机制的,Redis中的事务可以理解为一个打包的批量执行脚本,但批量执行并发原子化的操作,中间某条指令失败不会导致前面已做指令回滚,也不会中止脚本的运行。

Multi(标记一个事务块的开始)

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name ike
QUEUED
127.0.0.1:6379> get name
QUEUED
127.0.0.1:6379> exec
1) OK
2) "ike"

Exec(执行事务块内的命令)

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name ike
QUEUED
127.0.0.1:6379> get name
QUEUED
127.0.0.1:6379> exec
1) OK
2) "ike"

Discard(取消事务,放弃执行事务块内的所有命令)

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name luke
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get name
"ike"

Watch(监视一个或多个key,如果再事务执行之前key有被其它命令改动,那么事务将被打断)

127.0.0.1:6379> watch name                  //  监视name
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name andy               // 修改name为 andy,并在另一个客户端修改name为ike
QUEUED
127.0.0.1:6379> exec                // 执行失败
(nil)  
127.0.0.1:6379> get name                       
"ike"

Unwatch(取消对所有key的监视)

127.0.0.1:6379> watch name
OK
127.0.0.1:6379> unwatch
OK

  

 

posted @ 2020-05-24 15:22  TrumpC  阅读(60)  评论(0)    收藏  举报