redis事务操作

Redis事务是一个独立的隔离操作,包括Multi、Exec、Discard等命令。事务中的命令会按顺序执行,不受其他客户端请求影响。在事务处理中,如果命令有误,可能导致所有命令取消执行或部分成功。Redis使用乐观锁实现事务,通过watch命令监视key防止冲突。事务具备单独的隔离操作、无隔离级别概念以及不保证原子性三大特性。
摘要由CSDN通过智能技术生成

1、redis事务定义
redis事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序地执行,事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
redis事务的主要作用就是串联多个命令防止 别的命令插队。
2、Multi、Exec、discard
  
从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,redis会将之前的命令依次执行。
组队的过程中可以通过discard来放弃组队。
redis事务分2个阶段:组队阶段、执行阶段
组队阶段:只是将所有命令加入命令队列
执行阶段:依次执行队列中的命令,在执行这些命令的过程中,不会被其他客户端发送的请求命令
插队或者打断。

 2.1、相关的几个命令
multi:标记一个事务块的开始
标记一个事务块的开始。
事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 exec 命令原子性(atomic)地执行。
示例

redis> MULTI       # 标记事务开始
OK
redis> INCR user_id   # 多条命令按顺序入队,返回值为QUEUED,表示这个命令加入队列了,还没
有被执行。
QUEUED
redis> INCR user_id
QUEUED
redis> INCR user_id
QUEUED
redis> PING
QUEUED
redis> EXEC       # 执行
1) (integer) 1
2) (integer) 2
3) (integer) 3
4) PONG

exec:执行所有事务块内的命令
执行所有事务块内的命令。
假如某个(或某些) key 正处于 watch 命令的监视之下,且事务块中有和这个(或这些) key 相关的命令,那么 exec 命令只在这个(或这些) key 没有被其他命令所改动的情况下执行并生效,否则该事务被打断(abort)。
返回值:
事务块内所有命令的返回值,按命令执行的先后顺序排列。
当操作被打断时,返回空值  nil 。
3个示例

# 示例1:事务被成功执行
redis> MULTI
OK
redis> INCR user_id
QUEUED
redis> INCR user_id
Q
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值