• Redis5事务 和Watch


    事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令

     

    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> zadd result  123 php
    QUEUED
    127.0.0.1:6379> zadd result  11 php
    QUEUED
    127.0.0.1:6379> exec
    1) (integer) 0
    2) (integer) 0
    Redis保证一个事务中的所有命令要么都执行,要么都不执行。
    如果在发送EXEC命令前客户端断线了,则Redis会清空事务队列,事务中的所有命令都不会执行。
    而一旦客户端发送了EXEC命令,所有的命令就都会被执行,即使此后客户端断线也没关系,因为Redis中已经记录了所有要执行的命令

    错误处理

    exec 完

    如果有一个命令执行错误了,那么后面的命令将不会执行,但是之前的语句却全都执行了.. 但是redis 并没有提供回滚功能,所有的烂摊子必须由开发者处理

    Watch

    如果需要对一个键的值++,但是在执行的时候其他客户端又对这个值修改了

    监听一个变量在执行事务的时候是否被修改了,如果被修改了事务取消

    监听完这个变量,只要不是在事务里头修改的那就是要取消的

    执行exec 之后会对所有的键取消监控

    watch 监听的键过期了,不会认为该键被改变

    127.0.0.1:6379> set count 1
    OK
    127.0.0.1:6379> watch count
    OK
    127.0.0.1:6379> set count 2
    QUEUED
    127.0.0.1:6379> multi 
    OK 
    127.0.0.1:6379> set count 3 
    QUEUED 
    127.0.0.1:6379> exec 
    (nil)

    !!!

  • 相关阅读:
    ES6新特性
    CSS Sprites (css精灵)
    标准盒子模型和IE盒子模型
    鼠标跟随运动效果
    git 命令大全
    JavaScript 原型链
    js基础---cookie存储
    html5新增标签
    css清除浮动的方法
    querySelectorAll与getElementsBy对比有什么不同
  • 原文地址:https://www.cnblogs.com/wlphp/p/11630536.html
Copyright © 2020-2023  润新知