zoukankan      html  css  js  c++  java
  • Redis 事务

    Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

    • 批量操作在发送 EXEC 命令前被放入队列缓存。
    • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
    • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    一个事务从开始到执行会经历以下三个阶段:

    • 监听命令 watch(key),不是必须的
    • 开始事务 multi(),开启事务
    • 命令入队,业务数据操作
    • 检测服务器 ping() ,检测服务器连接是否正常
    • 执行事务,exec(),执行事务

    PHP 中 Redis 事务的应用

    $redis = new redis(); // 创建redis对象
    $redis -> connect('127.0.0.1',6379);// 连接redis 数据库
    
    $redis -> watch('number'); // 监听key是number,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断,可以监视一个(或多个) key 
    $redis -> multi();            // 开始事务块
    $redis -> set('favorite_fruit','cherry');  //设置其他值
    $redis -> incrBy('number',3);   // 更新监听的数据
    $redis -> get('favorite_fruit');  // 获取值
    $redis -> ping();  // 测试与服务器的连接是否仍然生效,或者用于测量延迟值,如果连接正常就返回一个 PONG ,否则返回一个连接错误。 不是事务必须的命令 
    var_dump($redis -> exec());  // 执行事务
    //array (size=4)
    //  0 => boolean true
    //  1 => int 3
    //  2 => string 'cherry' (length=6)
    //  3 => string '+PONG' (length=5)
    
    $redis -> discard();  // 取消事务,取消 watch 命令对所有 key 的监视。
    var_dump($redis -> exec());     // null

    Redis 事务命令

  • 相关阅读:
    http delete 服务端拿不到body
    VUE 指定、获取DOM元素的自定义值
    delphi + redis 实现即时消息
    VUE 父组件、子组件图片链接
    【杂记】Linux 学习笔记
    【杂记】Oracle
    iOS 容易造成循环引用的三种场景
    NSNotificationCenter KVO KVC Delegate Block
    C语言和OC的区别? 面向对象和面向过程的区别?
    SDWebImage的实现原理
  • 原文地址:https://www.cnblogs.com/xuey/p/13140703.html
Copyright © 2011-2022 走看看