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 ...
随机推荐
- ulimit -n 修改
Linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值.那么应该在哪里设置呢? [root@loca ...
- AndroidStudio、gradle、buildToolsVersion关系
使用AndroidStudio 开发也已经2年了,每次gradle 或者studio 有推荐更新后,项目重新sync后都会报错,提示更新相应的其他版本,比如AndroidStudio.gradle.b ...
- php 中使用include、require、include_once、require_once的区别
在PHP中,我们经常会通过include.require.include_once.require_once来引用文件,都可以达到引用文件的目的,但他们之间又有哪些区别呢,接一下我们详细的介绍一下 i ...
- LeetCode(37): 每k个一组翻转链表
Hard! 题目描述: 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一 ...
- 关系操作符 < > = == <= >= !=
基本类型可以用所有的操作符 对象要用equal eqauls() //用法 System.out.println(v1.equals(v2)); JAVA学习(二) STRING使用EQUALS方法和 ...
- python 全栈开发,Day72(昨日作业讲解,昨日内容回顾,Django多表创建)
昨日作业讲解 1.图书管理系统 实现功能:book单表的增删改查 1.1 新建一个项目bms,创建应用book.过程略... 1.2 手动创建static目录,并在目录里面创建css文件夹,修改set ...
- ORACLE 计算时间相减间隔
在Oralce中我发现有add_months函数,加天数N可以用如下方法实现,select sysdate+N from dual 在Oralce中我发现有add_months函数,加天数N可以用如下 ...
- Windows系统下oracle数据库每天定时备份
第一步:建立备份脚本oraclebackup.bat 首先建立一个备份bat文件,在D盘下新建备份目录oraclebackup,将oracle安装目录下的EXP.EXE复制到此目录下,再新建一个文本文 ...
- poj 1125 谣言传播 Floyd 模板题
假如有3个点 点1到点2要5分钟 点1到点3要3分钟 那么5分钟的时间可以传遍全图 所以要先找一个点到其他点的最长时间 再从最长的时间里找出最小值 Sample Input 3 // 结点数2 2 4 ...
- ElasticSearch - match vs term
match vs term 这个问题来自stackoverflow https://stackoverflow.com/questions/23150670/elasticsearch-match-v ...