0
点赞
收藏
分享

微信扫一扫

前端常用的一些编辑器库

探头的新芽 2023-05-15 阅读 65

什么是事务?

事务操作支持多项命令,命令会被序列化,通俗的来讲就是命令会被放入一个队列中。

在事务操作过程中,执行步骤会按照队列中的顺序进行执行,队列之外的命令并不会插入执行事务操作执行命令的过程中。

单一的命令执行保持原子性,但是事务操作却不会保持原子性,就是要么成功的执行全部,要么则是白用功,回到故事的开端,重新开始。

在redis中执行事务

注意:开启事务后,会出现 TX 标志,此时所有的操作不会马上有结果,而是形成队列(QUEUED),待执行事务后,会将所有命令按顺序执行。

开启事务

 放弃事务:DISCARD

事务中的命令存在错误:编译性错误

运行错误:加入队列中命令没有问题,但是执行命令可能存在一些语法性的问题,这时队列中的问题依旧会被执行,这个问题就是我在上面提到的转账业务,一个人会增加,但是另外一个人却不一定会减少。

监控:watch

乐观锁:

        乐观主义者,认为数据并不会出现问题,并不会进行上锁,在更新数据时,要与监控时数据进行比较,如果有人更改数据,则数据并不会发生改变。

        获取version

        在执行操作命令时去比较version时候发生改变

悲观锁:

        悲观主义者:认为数据无论在什么时候都有可能出现问题,什么数据都上锁 

redis测试监控

正常情况下

 在多线程环境里出现乐观锁时

线程一:

当线程一正在执行事务时这是线程二介入修改了money的数据值 

线程二:

那么线程一执行事务,会出现怎样的结果呢?

出现乐观锁问题,之后又如何执行完线程一的操作呢?

举报

相关推荐

0 条评论