redis 在 php 中的应用(事务 [ Transaction ] 篇)
本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法)
目录:
| Transaction(事务) | ||||
| WATCH | UNWATCH | MULTI | EXEC | DISCARD |
Transaction(事务)
1、WATCH
Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
语法:
redis 127.0.0.1:6379> Watch
返回值: 总是返回 OK
可用版本:>= 2.2.0
时间复杂度:O(1)
具体实例:
$redis -> watch('number');
2、UNWATCH
Redis Unwatch 命令用于取消 WATCH 命令对所有 key 的监视。
语法:
redis 127.0.0.1:6379> UNWATCH
返回值: 总是返回 OK
可用版本:>= 2.2.0
时间复杂度:O(1)
具体实例:
$redis -> watch('number');
$redis -> unwatch();
3、MULTI
Redis Multi 命令用于标记一个事务块的开始。
事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
语法:
redis 127.0.0.1:6379> Multi
返回值: 总是返回 OK
可用版本:>= 1.2.0
时间复杂度:O(1)
具体实例:
$redis -> multi();
4、EXEC
Redis Exec 命令用于执行所有事务块内的命令。
语法:
redis 127.0.0.1:6379> Exec
返回值: 事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回空值 nil
可用版本:>= 1.2.0
时间复杂度:事务块内所有命令的时间复杂度的总和
具体实例:
<?php
$redis = new redis();
$redis -> connect('127.0.0.1',6379);
$redis -> flushAll(); $redis -> watch('number');$redis -> multi();
$redis -> set('favorite_fruit','cherry');
$redis -> incrBy('number',3);
$redis -> get('favorite_fruit');
$redis -> ping();
var_dump($redis -> exec());
//array (size=4)
// 0 => boolean true
// 1 => int 3
// 2 => string 'cherry' (length=6)
// 3 => string '+PONG' (length=5)
5、DISCARD
Redis Discard 命令用于取消事务放弃执行事务块内的所有命令。
语法:
redis 127.0.0.1:6379> DISCARD
返回值: 总是返回 OK 。
可用版本:>= 2.0.0
时间复杂度:O(1)。
具体实例:
<?php
$redis = new redis();
$redis -> connect('127.0.0.1',6379);
$redis -> flushAll(); $redis -> watch('number');
$redis -> unwatch();
$redis -> multi();
$redis -> set('favorite_fruit','cherry');
$redis -> incrBy('number',3);
$redis -> get('favorite_fruit');
$redis -> ping();
$redis -> discard(); // 取消事务
var_dump($redis -> exec()); // null
如有转载,请注明出处:http://www.cnblogs.com/chrdai/p/6856619.html
redis 在 php 中的应用(事务 [ Transaction ] 篇)的更多相关文章
- redis 在 php 中的应用(List篇)
本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: List(列表) LPUSH LPUSHX RPUSH R ...
- redis 在 php 中的应用(Set篇)
本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) Redis的 Set 是 string 类型的无序集合.集合成员是 ...
- redis 在 php 中的应用(Sorted-set篇)
本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) Redis 有序集合和集合一样也是string类型元素的集合,且不 ...
- redis 在 php 中的应用(Hash篇)
本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) Redis hash 是一个string类型的f ...
- redis 在 php 中的应用(string篇)
本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: string(字符串) SET SETN ...
- redis 在 php 中的应用(key篇)
本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: KEY(键) DEL ...
- redis 在 php 中的应用
一.redis 在 php 中的应用(Key篇) 二.redis 在 php 中的应用(String篇) 三.redis 在 php 中的应用(Hash篇) 四.redis 在 php 中的应用(Li ...
- redis源码分析之事务Transaction(下)
接着上一篇,这篇文章分析一下redis事务操作中multi,exec,discard三个核心命令. 原文地址:http://www.jianshu.com/p/e22615586595 看本篇文章前需 ...
- JDBC中的事务-Transaction
事务-Transaction 某些情况下我们希望对数据库的某一操作要么整体成功,要么整体失败,经典的例子就是支付宝提现.例如我们发起了支付宝到银行卡的100元提现申请,我们希望的结果是支付宝余额减少1 ...
随机推荐
- 【bzoj1901】dynamic ranking(带修改主席树/树套树)
题面地址(权限题) 不用权限题的地址 首先说说怎么搞带修改主席树? 回忆一般的kth问题,我们的主席树求的是前缀和,这样我们在目标区间的左右端点的主席树差分下就能求出kth. 那么我们如何支持修改操作 ...
- @RequestBody,@ResponseBody
@RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上: ...
- c++ 引用方式传递数组
值传递 (pass by value),指针传递(pass by pointer),当发生函数调用时,需要给形参分配存储单元.当传递是对象时,要调用拷贝构造函数.而且指针最后析构时,要处理内存释放问题 ...
- 关于学生成绩查询的几个SQL语句
数据库有三个字段,名字.学科.成绩,如图 1. 找出每科成绩最高的学生的名字与分数 2.找出总分最高的学生名字与总分 3.找出三科成绩均大于80分的学生
- CSS三:CSS的三种引入方式
CSS的引入方式共有三种:行内样式.内部样式表.外部样式表. 一.行内样式 使用style属性引入CSS样式. 示例:<h1 style="color:red;">st ...
- 微信HTML5页面设计建议
一个HTML5页面从提出到完成上线的流程:> 1.需求方.设计人员.H5实现人员三方共同讨论实现方案 2.设计人员出设计图 3.H5人员按设计图出H5页面 4.需求方评估已实现的H5页面后给 ...
- 关于java中Stream理解
关于java中Stream理解 Stream是什么 Stream:Java 8新增的接口,Stream可以认为是一个高级版本的Iterator.它代表着数据流,流中的数据元素的数量可以是有限的, 也可 ...
- HDFS上创建文件、写入内容
1.创建文件 hdfs dfs -touchz /aaa/aa.txt 2.写入内容 echo "<Text to append>" | hdfs dfs -appen ...
- [转] react-router4 实现按需加载
按需加载的背景 https://juejin.im/post/58f9717e44d9040069d06cd6?utm_source=tuicool&utm_medium=referral R ...
- PostgreSQL的SQL语句中的双引号引发的问题
最近开发一个WEB的ETL工具需要用到不同的数据源.第一次用POSTGRESQL发现一个双引号引发的问题: 标准的SQL是不区分大小写的.但是PostgreSQL对于数据库中对象的名字允许使用支持大小 ...