redis的事务与乐观锁
2022/9/13 2:23:10
本文主要是介绍redis的事务与乐观锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
redis的事务与乐观锁
redis事务的本质是一组命令的集合,事务支持一次执行多条命令,一个事物中所有命令都会被序列化,在事务执行时,会按照之前的顺序串行执行队列中的命令,其他客户端提交的命令不会插入到事务的执行队列中去。
redis事务的本质
redis事务是一次性,顺序性,排他性的执行一个队列中的一系列命令
redis事务的特点
-
redis事务没有隔离级别的概念
所有命令在事务中,并没有直接执行,只有发起执行命令(exec)时才会执行
-
redis事务不保证原子性
redis的单条命令是原子性的,但事务不保证原子性,事务执行过程中有一条命令执行失败,其他命令仍会执行
redis事务的三个阶段
1.开始事务(multi) 2.命令入队(redis命令) 3.执行事务(exec) 正常执行事务后,会依次返回redis命令结果 如果在命令入队过程中想要取消事务,可以输入命令discard取消事务
redis事务的两种异常情况
编译型异常
此异常为执行命令有问题,当输入错误的命令后,事务中所有命令都不会被执行 如:get key1 key2 这种命令错误的命令
运行时异常
此异常为事务执行过程中类型错误的问题,此时事务中除语错误的命令外,其他命令的均能正常执行 如:set k1 value incr k1 :这种给字符串自增1的命令
锁机制
悲观锁
认为什么时候都会出问题,无论做什么都会加锁
乐观锁
认为什么时候都不会有问题,不出上锁,只在更新数据时判断,在此期间是否有数据变动
watch实现乐观锁
watch(监控):用于监控key的value值--watch key
例如当有两个客户端同时操作同一个redis时 其中一个客户端通过watch的方式来对事务中要改变数组的key进行监控 watch money multi incrby money 200 exec 如果在执行事务时,监控money的值没有发生变化,则事务正常执行,watch失效 如果money的值发生变化,则事务会执行失败,如果想再次加乐观锁就需要解除监控,再监控最新的money值 unwatch watchmoney multi incrby money 200 exec
这篇关于redis的事务与乐观锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07Redis高并发入门详解
- 2024-12-07Redis缓存入门:新手必读指南
- 2024-12-07Redis缓存入门:新手必读教程
- 2024-12-07Redis入门:新手必备的简单教程
- 2024-12-07Redis入门:新手必读的简单教程
- 2024-12-06Redis入门教程:从安装到基本操作
- 2024-12-06Redis缓存入门教程:轻松掌握缓存技巧
- 2024-12-04Redis入门:简单教程详解
- 2024-11-29Redis开发入门教程:从零开始学习Redis
- 2024-11-27Redis入门指南:快速掌握Redis基础操作