redis事务(乐观锁,悲观锁)

Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断

Redis事务的主要作用就是串联多个命令防止别的命令插队

 

Redis事务三特性

  • 单独的隔离操作

事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

  • 没有隔离级别的概念

队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行

  • 不保证原子性

事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚

 

 

开启事务

multi

 

组队阶段可以添加redis语句

set k1 v1

set k1 v2

set k2 v1

 

执行事务(依次执行redis语句)

exex

删除事务

discard

 

 

 

 

 

 

 

报错情况有两种

【组队阶段】某个命令出现了报告错误,执行时整个的所有队列都会被取消。

 

 

 

如果【执行阶段】某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。

 

 

 

 

 

 

悲观锁通过锁住资源,一个个挨着操作,避免发生线程安全问题(上锁解锁运行慢)

乐观锁(redis的事务会使用该锁)(不会上锁)通过在更新时会对比线程中的版本号与数据库版本号,相同才接着运行,不同就不运行了,避免发生线程安全问题(适用于多读的情况)

 

posted @ 2021-08-07 20:55  低调的。。。  阅读(124)  评论(0编辑  收藏  举报