Redis教程

19-redis事务基本操作2

本文主要是介绍19-redis事务基本操作2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

乐观锁:
在数据库中添加一个version字段,在查数据的时候把这个也查出来,更新的时候将这个version字段更新并作为条件。update ... set ... version = version +1 where version = ? ,可以避免例如两个人同时从银行取钱但是两个人共同的花费大于余额的情况.

1、watch:
在redis中,有一个乐观锁更强大的功能,watch。它可以监控某一个键,当事务在齿形的过程中,如果此键代码的值发生变化,则本事务放弃执行。否则正常执行

(1)第一个连接
set version 1
set balance 100
set balance1 1000

watch version
multi
decrby balance 50
incrby balance1 50
exec(在第二个连接执行完后再执行)

(2)第二个连接
incr version

2、unwatch:放弃监控所有的键

3、小结
(1)单独的隔离操作:事务的所有命令都会被序列化,顺序的执行。事务在执行的过程中,不会被其他客户端发来的命令请求所打断(watch除外)

(2)不保证事务的原子性:redis同一个事务中如果一条命令执行失败,其后的命令仍然可能会被执行,redis的事务没有回滚。Redis已经在系统内部进行功能简化。这样可以确保更快的运行速度。因为Redis不需要事务回滚的功能

这篇关于19-redis事务基本操作2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!