Redis学习:事务处理基础

1.什么是事务?

简单来说,事务是一组命令的集合,一个事务中的所有命令要么全部执行,要么全不执行。

Redis保证一个事务中的所有命令要么都执行,要么都不执行,它还能保证一个事务内的命令依次执行而不被其他命令插入。

简单使用如下:
在这里插入图片描述
multi告诉Redis:下面我给你发的命令属于同一事务,先不要执行,存起来。Redis返回OK。
exec告诉Redis:我发完了,你可以执行之前存储的命令了

注意:如果在发送exec命令前客户端断线了,则Redis会清空所有事务队列,事务中的所有命令都不会执行,如果在发送exec命令后断线,所有命令都会被执行。

2.事务错误处理
事务错误可分为两类:
1)语法错误:语法错误指命令不存在或者命令参数的个数不对。
当发生语法错误时,执行exec命令后Redis就会直接返回错误,连语法正确的命令也不会执行。
在这里插入图片描述

2)运行错误:在命令执行时出现的错误,比如使用散列类型的命令操作集合类型的键,这种错误在实际执行之前Redis是无法发现的。
如果事务里的一条命令出现了运行错误,事务里的其他命令依然会被执行(包括出错命令之后的命令)。
在这里插入图片描述

注意:Redis的事务没有提供回滚功能(rollback),为此开发者必须事先在事务执行出错后自己将数据库复原回事务执行之前的状态。

3.WATCH命令介绍
我们已经知道在一个事务中只有当所有命令都执行完后才能得到每个结果的返回值,可是在有些情况下我们需要先获得一条命令的值后才能进行下一条命令。

为了解决这个问题我们需要WATCH:WATCH命令可以监控一个或多个键,一旦其中有一个键在事务之前被修改,之后的事务就不会执行,监控一直持续到EXEC命令

在这里插入图片描述
执行EXEC命令会取消对所有键的监控,如果不想执行事务中的命令来取消监控,也可以使用UNWATCH命令来取消监控。

注意:由于WATCH命令的作用只是被监控的键值被修改后阻止之后一个事务的执行,而不能保证其他客户端不修改这一键值,所以我们需要在EXEC执行失败后重新执行整个函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小牧之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值