第九节----Redis 事务

8.1  开始事务

        一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。MULTI
  • 命令入队。EXEC
  • 执行事务。

        Redis的事务有几个特点:

        (1)单个命令原子性,即单个命令要么执行,要么就不执行,不会执行到一半就停止了。

        (2)多个命令中,如果某个命令出现异常,不会进行回滚。Redis将跳过这个错误的命令,继续执行下面的其它命令。可以理解为MySQL存储过程中的,CONTINUE方式的处理程序。

        开启事务的语法:MULTI

MULTI

8.2  添加命令

        在执行MULTI命令后,接着写一些命令。可以写个把错误的命令测试是不是将这些错误的命令忽略掉。

DEL  myKey

SET  myKey  myValue

DEL  mySet

SADD  mySet  valueA

SADD  mySet  valueA   # 这里故意将重复的元素插入到mySet中,如果忽略掉此命令,那么mySet将只有2个元素

SADD  mySet  valueB

SCARD   mySet    #查看mySet的个数,预期为2

8.3  执行命令

         执行进栈后的所有命令,并忽略错误的命令。

EXEC   

         下面的图片中展示了一个完整的事务执行流程。

         EXEC下面的是所有命令的执行结果,在最后一行中,其结果是2,符合我们在Set集合中插入三个元素,其中有两个元素是相同的,只成功插入了一个,所以最后Set集合的个数为2

8.4  取消事务

        开始事务后,肯定也有取消事务的时候。

        取消事务语法:DISCARD

MULTI   #开启事务

DEL   myKey   #这个事务中希望删除myKey

DISCARD  #但是突然觉得myKey还是有用的,所以就用DISCARD  取消本次事务

GET   myKey  #再次获取myKey,看看是不是被删除了。结果表明没有被删,说明事务被成功取消。

 

        

posted @ 2022-07-17 12:15  小大宇  阅读(31)  评论(0编辑  收藏  举报