Redis事务:输入multi,输入的命令都会依次进入到队列中,但不会执行,直到输入exec,redis会将之前命令队列中的命令依次执行,通过discard可以放弃组队。
主要作用:序列化操作,串联多个命令防止别的命令插队
悲观锁:每次拿到数据的时候都会上锁,或者等待别人处理完再去拿锁,传统的关系型数据库里边很多用到了这种锁机制,比如行锁、表锁、读锁、写锁
乐观锁:每次拿数据的时候总认为别人不会修改数据,所以不会上锁。但是更新的时候回去判断别人有没有更改数据,使用版本号机制。乐观锁适用于多读的应用类型,可以提高吞吐量。
Redis使用乐观锁:redis就是利用check-and-set机制实现事务
三大特性:
单独的隔离操作:事务中的所有命令都会序列化,按顺序执行。不会被其他客户端打断
没有隔离级别概念:队列中的命令没有提交之前不会被执行,事务外不能查看事务内的更新
不能保证原子性:跳过错误,依旧执行,没有回滚