zoukankan      html  css  js  c++  java
  • PHP使用Redis的事务命令

    1.redis事务命令:

    命令作用返回值
    watch 监视一个或多个key 总是OK
    multi 声明事务开始,后续命令将排队按顺序等待exec执行 总是OK
    exec 顺序执行multi之后的命令,如果multi之前使用watch命令监视的键的值发生变化,执行将失败 执行成功时返回数组包含每个命令执行结果,失败时原生命令返回null,php-redis扩展方法返回false
    discard 取消事务 总是OK
    unwatch 取消watch监视,如果watch监视之后执行了exec或discard,会自动取消监视,不必再unwatch 总是OK

    2.redis事务示例:
    <?php
    try {
    //连接本地的 Redis 服务
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);
    } catch (Exception $e){
    echo $e->getMessage();
    die;
    }

    $key1 = 'x1';
    $key2 = 'x2';

    $redis->set($key1, '123');
    $redis->set($key2, '234');

    try {
    //监视一个(或多个)key,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
    $redis->watch(array($key1, $key2));

    //模拟监视 key 被打断
    //$redis->set($key1, '12345');

    $redis->multi();
    $redis->set($key1, '1123');
    $redis->set($key2, '2123');
    //执行事务块内的所有命令
    $status = $redis->exec();
    //失败则取消事务
    if (!$status) {
    $redis->discard();
    }
    } catch (Exception $e){
    echo $e->getMessage();
    die;
    }

    var_dump($status);

    echo '<br>';

    echo $redis->get($key1) . '-' .$redis->get($key2);

  • 相关阅读:
    2016.7.22.noip2012D2
    2016.7.21.noip2014D2
    LIS最长上升子序列O(n^2)与O(nlogn)的算法
    vijos1910解方程
    vijos1909寻找道路
    viojs1908无线网路发射器选址
    P1907飞扬的小鸟
    P1906联合权值
    P1905生活大爆炸版 石头剪刀布
    poj1274(匈牙利算法)
  • 原文地址:https://www.cnblogs.com/WebLinuxStudy/p/12809115.html
Copyright © 2011-2022 走看看