事务
-
redis单条命令保证原子性,事务不保证原子性
-
redis的事务:
- 开启事务(multi)
- 命令入队(…)
- 执行事务(exec)
-
放弃事务
discard 命令可以放弃
-
异常
编译型异常,事务中所有命令都不会执行(如语法错误)
运行时异常,其他命令可以执行,错误命令抛出(如1/0)
锁
悲观锁:无论做什么都会加锁
乐观锁:判断一下是否有人修改数据,如果修改数据,就抛弃
使用watch给变量加乐观锁,若判断在执行的时候修改了数据,则抛弃执行的操作
执行成功后,watch会自动解锁,若执行未成功,则需使用unwatch解锁后,重新再进行操作