乐观锁(Optimistic Lock),是一个乐观的锁,每次去拿数的时候都认为别人不会对数据进行修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用“版本号”等机制,乐观所使用于多读的应用类型,这样可以提高吞吐量。
乐观所策略:提交版本必须大于当前记录的版本,才可以进行更新
(2)悲观锁
悲观锁(Pessimistic Lock)们就是一个很悲观的锁,每次去拿数据的时候会认为其它人会根据修改操作,导致覆盖等问题。所以每次在拿数据的时候都会上锁,这样如果别人想要拿数据,就会 block ,一直到修改完之后,解开锁菜可以使用,传统的关系醒数据库里边就用了很多这种锁的机制,比如行锁,表锁,读锁,写锁,这都是在做操作之前,先对表上锁。
悲观锁保证数据安全,但是会使性能下降
四、三特性
1、单独的隔离操作:
事务中的所有命令都会序列化、按顺序执行。事务执行过程中,不会被其他客户端发送来的命令请求打断。
2、没有隔离级别的概念:
队列中的命令没有提交之前不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到是物理的更新,在事务外查询不能看到这个问题了”
3、不保证原子性:
redis 同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚。
(除非加入队列的时候就出错,即类似 java 的编译时异常和执行时一异常,编译时会导致回滚,执行时异常不回滚)
推荐教程: 《Redis教程》
以上就是什么是Redis事务的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
更多相关阅读请进入《Redis》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。