Redis 事务有五大重要命令,MULTI、EXEC、DISCARD、WATCH和UNWATCH,Redis事务允许在一次单独的步骤中执行一组命令也就是进行批处理。(把可执行的结果输出)
命令介绍
1. MULTI:使用该命令,标记一个事务块的开始,通常在执行之后会回复OK,(但不一定真的OK),这个时候用户可以输入多个操作来代替逐条操作,redis会将这些操作放入队列中。
2. EXEC:执行这个事务内的所有命令
3. DISCARD:放弃事务,即该事务内的所有命令都将取消
4. WATCH:监控一个或者多个key,如果这些key在提交事务(EXEC)之前被其他用户修改过,那么事务将执行失败,需要重新获取最新数据重头操作(类似于乐观锁)。
5. UNWATCH:取消WATCH命令对多有key的监控,所有监控锁将会被取消。
基本操作
在执行过程中如果出现语法错则回滚,命令才会失败,否则redis不会出现回滚,而是继续执行,这就是与关系型数据库的差别(非原子性)
悲观锁乐观锁
乐观锁:就像他的名字,不会认为数据会出错所以不会为数据上锁,但是为了保证数据的一致性,他会在每条记录的后面添加一个vision(版本号),如果修改表时发现表已经被别人修改过了,当进行提交就会报错,vision就会增加,目的就是为了防止覆盖别人修改的内容所以提交时的版本必须大于当前版本才能跟新。
悲观锁:认为这个模式数据一定会出错,所以在操作前都要将整张表锁起来,这样会有很强的一致性,但是同时会有极低的并发性(如传统数据库的表锁,行锁,读锁,写锁),常用语数据库的备份操作。