redis--->事务

事务

redis单条命令是保证原子性的,但是redis事务是不保证原子性的

redis事物本质:是一组命令的集合!一个事务的所有命令都要被序列化,在事务执行过程中,会按照顺序执行!

一次性,顺序性,排他性(不允许被干扰),执行一系列的命令

redis事务没有隔离级别的概念

所有命令在事务中并没有直接被执行,只有发起执行命令的时候才会执行!Exec

redis事务:

开启事务(multi)

命令入队(........)

执行事务(exec)

放弃事务(discard)

编译型异常:(命令有错,代码有问题)事务中所有命令都不会被执行

运行时异常:其他命令可以正常执行,错误命令抛出异常

任务队列中有的人错了,依旧可以执行

redis不保证原子性

监控!watch

悲观锁:

  • 无论做什么都会加锁

乐观锁:

  • 所以不会加锁,判断一下在此期间是否有人修改
  • 获取version
  • 更新的时候比较version

例:watch   money

另外一个线程去修改我们的值,这个时候就会导致事务执行失败

unwatch       解锁

watch   money      重新加锁

如果失败重新获取锁

原文地址:https://www.cnblogs.com/springxian/p/14459949.html