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)

    !!!

  • 相关阅读:
    SQL 语句添加约束
    sql server 的表进行设计后保存不了,一下方法可以解决
    约束的类型大全Sql server视图创建
    Python求和
    冒泡排序
    Python连接M有SQL,新增操作
    Python连接MYSQL,并做查询操作
    Python实现水仙花数
    测试工程师的一些面试题目(python)
    转:用Python解答百度测试开发算法面试题
  • 原文地址:https://www.cnblogs.com/wlphp/p/11630536.html
Copyright © 2011-2022 走看看