redis的事务

事务

事务要么同时成功,要么同时失败,原子性。(关系型事务库才会保证原子性)

redis事务本质:一组命令的集合,一个事务的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!一次性,顺序性,排他性,执行一系列的命令!

注意:redis单条命令式保存原子性的,但是事务不保证原子性。

redis事务没有隔离级别的概念!所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行!Exec Redis的单条命令是保存原子性的,但是事务不保证原子性。

redis的事务

·开启事务()

·命令入队()

·执行事务()

锁:redis可以实现乐观锁

正常执行事务

127.0.0.1:6379> multi. #开启事务
OK
127.0.0.1:6379(TX)> set key1 v1。 #命令入队
QUEUED
127.0.0.1:6379(TX)> set key2 v2
QUEUED
127.0.0.1:6379(TX)> get key2
QUEUED
127.0.0.1:6379(TX)> set key3 v3
QUEUED
127.0.0.1:6379(TX)> exec。 #执行事务

  1. OK
  2. OK
  3. “v2”
  4. OK

放弃事务:

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set k1 v1
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> discard #放弃事务
OK
127.0.0.1:6379> get k2
(nil)

###############################

处理错误

编译型异常,运行时异常

针对运行时异常(1/0),如果事务队列中存在语法性,那么命令执行的时候,其他命令是可以正常执行的。只有错误命令会抛出异常。

127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> incr key1
QUEUED
127.0.0.1:6379(TX)> set ke v2
QUEUED
127.0.0.1:6379(TX)> set keys v3
QUEUED
127.0.0.1:6379(TX)> exec

  1. (error) ERR value is not an integer or out of range
  2. OK
  3. OK
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值