事务

作者: 时海观察者 | 来源:发表于2018-12-27 16:14 被阅读1次

    简介

    MULTI、EXEC、DISCARD、WATCH是redis事务的基础。事务特征如下:

    • redis事务允许将命令序列打包成一个原子操作,在执行事务的过程中不会被打断执行其他命令。
    • 要么处理所有命令,要么都不处理。在MULTI阶段服务器收集命令序列,只有在调用EXEC的时候事务的命令序列才会被执行。在使用AOF时,如果事务未被完整的写入磁盘,redis-server在重启时将会检测到这种错误从而退出并显示这种错误。使用redis-check-aof工具进行修复删除不完整的事务,以便服务可以启动。
    • MULTI收集命令期间,如果某个命令入队失败(例如语法错误),在redis 2.6.5之前,将会在调用EXEC时执行成功入队的命令子集作为事务;在redis 2.6.5之后,服务器将拒绝执行该事务,在EXEC时返回错误信息并自动丢弃该事务。
    • EXEC执行期间,如果有命令执行失败,事务不会回滚,其他命令照常执行,完成后一次性返回各个命令的回复信息。

    WATCH与乐观锁

    在使用MULTI收集命令前,使用WATCH来缓存某些KEY的值,在EXEC时执行检查,如果监视的KEY的值被修改了,事务将拒绝执行并返回nil

    事务结束、客户端连接关闭将会自动的UNWATCH,或者主动使用UNWATCH来取消监视。

    使用

    WATCH key1 key2
    MULTI
    INCR key1
    INCR key2
    EXEC
    

    相关文章

      网友评论

        本文标题:事务

        本文链接:https://www.haomeiwen.com/subject/lkxdlqtx.html