美文网首页
Redis之事务

Redis之事务

作者: 煮茶boy | 来源:发表于2018-10-07 22:40 被阅读0次

    简单的说,事务表示一组动作,要么全部执行,要么全部不执行,避免出现数据不一致的情况.

    • Redis提供了简单的事务功能,将一组需要一起执行的命令放到multiexec命令之间 ,multi命令代表事务开始,exec代表事务结束.
    >>>multi
    >>>sadd user:a:follow user:b
    >>>sadd user:a:follow user:b
    >>>exec
    
    2.jpg
    • 如果要取消事务的执行,使用discard命令代替exec命令即可.


      3.jpg
    • 如果事务的命令出现错误,不同的错误Redis的处理方法也不同.

    如果是语法错误(命令写错等),则会导致整个事务都不执行.

    如果是运行时错误,则会导致发生错误之前的代码都会执行,报错的代码和后面的代码不会执行,Redis不支持回滚操作.

    • 有些应用场景需要保证在运行事务之前,事务中的key没有被其他的客户端修改过才执行错误,否则不执行(返回nil),Redis提供watch命令来解决这类问题.
    >>>set test "hello"
    >>>watch test
    >>>multi
    >>>append test "python"
    >>>append test "redis-py"
    >>>set test "moon"       -- 这条命令来自另外一个客户端
    >>>exec
    (nil)      -- 因为key "test"的值被另外一个客户端改变(watch命令之后,exec命令之前),所以事务不执行.
    

    相关文章

      网友评论

          本文标题:Redis之事务

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