redis事务不具有回滚机制,那么它是如何进行事务控制的

redis事务任何数据库都要有一套自己的事务控制机制,redis事务是一次可以执行多个命令,它的本质是一组命令的集合 。一个事务中所有的命令都会被序列化,在事务执行的过程中会按照顺序执行队列中的命令 。其它客户端提交的命令请求会等到事务执行完毕再执行 。
总的来说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令 。
redis事务和其它数据库事务的区别:1、redis事务是分为三个阶段:开始事务、命令入队、执行事务 。
2、redis事务不具有隔离级别的概念:redis在发送exec命令之前,命令操作只是被放入到队列缓存当中,并不会被实际执行,因此也就不能类似关系型数据中,在事务内查询已经变更的操作,事务外的客户端更不能查询到事务内的数据 。
3、redis事务是不保证原子性的:redis事务只保证在命令格式只有在都正确的情况下才会都执行,要不就都不执行命令 。但是事务的整体是不保证原子性的,且没有回滚,当事务中任意一个命令执行失败,其余的命令依然会执行 。
redis命令语法结构:1、watch key1 key2等等:监视一个或者多个KEY,如果在事务执行的时候,key的值被其它命令改动,则事务被打断,全部不执行,redis通过该机制完成事务的乐观锁 。
2、multi:用于指定redis事务的开始 。
3、exec:用于指定redis事务开始执行(顺序、一次性执行所有事务中的命令),一旦执行exec,前面加的监控锁都会被取消 。
4、discard:用于取消事务 。放弃事务中的所有命令 。
【redis事务不具有回滚机制,那么它是如何进行事务控制的】5、unwatch:取消对watch中key的监控 。


    推荐阅读