1.事务
什么时事务:可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞
能干嘛:一个队列中,一次性、顺序性、排他性的执行一系列命令
2.redis事务命令
1.discard 取消事务
2.exec执行所有事务
3.multi标记一个事务块的开始
4.unwatch取消watch 取消watch命令对所有key的监视
5.watch key 【key。。。】监视一个或多个key,如果在事务执行之前这个或这些key被其他命令所改动,那么事务将被打断
2.1正常执行
multi
set k1 v1
set k2 v2
set k3 v3
incr count
exec
2.2放弃事务
multi
set k1 v11
set k2 v22
set k3 v33
incr count
discard
2.3全体连坐
multi
set k1 v111
set k2 v222
set k3
故意写错语法编译不通过
2.4 冤头债主
multi
set k1 v1111
set k2 v2222
incr count
incr emal
set k3 v3333
exec
第四条命令回执行失败,其他全部成功
2.5watch监控
1.悲观锁,顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据是的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁
2.乐观锁,顾名思义,就是很乐观,每次拿数据的时候都认为别人不会修改,所有不糊上锁,但是在更新时会判断一下在此期间别人有没有区更新这个数据
乐观锁策略:提交版本必须大于记录当前版本才能执行更新
watch是乐观锁
set k1 abc
set balance 100
watch balance
multi
set k1 abc2
set balance 110
exec
一旦执行了exec之前加的监控锁都会被取消掉了
当客服端连接丢失的时候,所有东西都会被取消监视
开启=入队-执行