MUTI
开启事务,后续的命令会被加入到同一个事务中
事务中的操作会发送给客服端,但是不会立即执行,而是将操作放到了该事务对应的一个队列中,服务端返回QUEQUD
EXEC
执行EXEC后,事务中的命令才会执行
事务中的命令出错时,不会回滚也不会停止,而是继续执行下一步操作
DISCARD
取消事务,事务队列会被清空
原子性:不支持,不会回滚,
隔离性:支持,事务中的命令顺序,不会被打断
持久性:不支持
一致性:不支持,要求通过乐观锁watch来实现
乐观锁:watch
redis实现乐观锁机制
机制:开启事务前,设置对数据的监听,EXEXC时,如果发生数据发生过修改,事务会自动取消(DISCARD)
事务EXEC后,无论成败,监听会被移除
示例代码:
悲观锁: