zoukankan      html  css  js  c++  java
  • 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)

    !!!

  • 相关阅读:
    淘宝的样式初始化
    手机上 input submit ios和andirod样式不统一
    css实现div左侧突出一个带边框的三角形
    git不提交某个文件
    判断一个对象是否是数组
    操作对象的几种方法
    LWIP互联网资料汇总
    stm32 看门狗
    SPI协议再读
    每天要做的事
  • 原文地址:https://www.cnblogs.com/wlphp/p/11630536.html
Copyright © 2011-2022 走看看