美文网首页
Redis事务

Redis事务

作者: 柳蒿 | 来源:发表于2019-10-22 10:42 被阅读0次

    Redis事务的三个阶段

    1. 开启事务
    2. 命令入队列
    3. 执行事务

    Redis事务的三个特性

    1. 单独的隔离操作:事务中所有命令会按顺序执行,不会被其他命令打断
    2. 没有隔离级别的概念:在提交之前,任何事物都不会被实际执行。而mysql中,事务提交之前命令就已经执行,mysql根据执行的结果决定是否回滚。
    3. 不保证原子性:事务中有错误的命令,其他命令仍可以执行,不会回滚。

    Redis对事务的支持是部分的。

    multi:redis事务开启
    exce:执行事务

    1. 如果事务中有错误的命令,则所有的命令都不执行
    2. 如果事务中有正确但执行时会出错的命令(例如对String类型执行incr操作),则其他正确的命令可以执行。
    MULTI
    set k1 v1
    set k2 v2
    incr k1
    EXCE
    

    虽然incr k1命令会报错,但事务可以执行,能添加新值 k1-v1,k2-v2。

    MULTI
    set k1 v1
    set k2 v2
    getset k1
    EXCE
    

    由于事务中存在错误命令 getset k1 ,因此事务执行失败。

    WATCH:监控一个或多个key,如果在事务执行之前这个key被改变,则事务将被打断。类似乐观锁
    UNWATCH:取消WATCH命令对所有key的监视。

        WATCH balance
        MULTI
        decrby balance 20
        incrby debt 20
        EXCE
    

    如果在WATCH指令之后到执行事务之前,被监控的balance都没有改变的话,则事务执行成功。如果已知监控变量发生了修改,可以用UNWATCH取消监控。

    相关文章

      网友评论

          本文标题:Redis事务

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