Redis事务管理

一,关系型数据库(sqlserver、mysql、oracle)的事务隔离机制说明

下面是设置MySQL数据库的事务隔离机制的sql语句:
set global transaction isolation level read uncommitted;
将全局事务隔离级别设置为未提交读取;

下面是事务隔离的几个机制:

1、read uncommitted(读取未提交的数据)
缺点:如果数据最终rollback了,那么读取的数据就错了
2、read committed(读取已经提交的数据)
缺点:如果在一个事务中,对通过一个数据进行了多次的读取。在多次读取的过程中,有人
提交了数据。那么多次读取的数据结果就会出现不一致。
3、repeatable read(重复读)
缺点:会出现幻读。
4、serializable(串行)
缺点:太慢

二,redis事务机制

1、 MULTI 与 EXEC命令

以 MULTI 开始一个事务,然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务,
一并执行事务中的所有命令

2、 DISCARD命令
DISCARD 命令用于取消一个事务, 它清空客户端的整个事务队列, 然后将客户端从事
务状态调整回非事务状态, 最后返回字符串 OK 给客户端, 说明事务已被取消。
乐观锁:一个版本控制 update table set age=13 where v=1
悲观锁:
3、WATCH命令(类似乐观锁)
WATCH 命令用于在事务开始之前监视任意数量的键: 当调用 EXEC 命令执行事务时,
如果任意一个被监视的键已经被其他客户端修改了, 那么整个事务不再执行, 直接返回失败。

三,示例

3.1,示例一 这个例子中没有出现异常,所以所有的命令都成功了

在这里插入图片描述

3.2,这个例子中,在事务开启后,有一个命令执行出错了,那么所有的命令都不会执行

在这里插入图片描述

3.3,这个例子中出现了两个事务,两个事务都表示自己执行成功了,但是有一个发现值并不是自己设置的,被别人覆盖了

在这里插入图片描述

3.4,加上Watch age后,再来执行事务。

左边的再开启事务之后,exec执行之前,右边有另外一个事务对age进行了修改。那么左边的事务将执行失败

在这里插入图片描述

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值