当前位置:首页 > PHP > 正文内容

php redis事务

高老师7年前 (2019-11-01)PHP1730

概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)

(1)基本事务:

//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

//开启事务
$redis->multi();

//操作key
$redis->flushAll();
$redis->incr('user_id');
$redis->incr('user_id');
$redis->incr('user_id');
$ping = $redis->ping();

//执行事务
$result = $redis->exec();
if ($result)
{
    echo '执行事务成功' . PHP_EOL;
}
else
{
    echo '执行事务失败' . PHP_EOL;
}

//打印执行事务可以看到所有的执行结果
var_dump($result);

输出结果:

array(5) {
  [0]=>
  bool(true)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  string(5) "+PONG"
}

(2).监视key执行事务(Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断)

<?php
exec('chcp 65001');

//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

//清空redis
$redis->flushAll();

//操作的redisKey
$key = 'user_id';

//监视key
$redis->watch($key);

//开启事务
$redis->multi();

//睡眠点时间,手动开一个终端也去操作这个key
sleep(60);

//操作key
$redis->incr($key);

//执行事务
$result = $redis->exec();
if ($result)
{
    echo '执行事务成功' . PHP_EOL;
}
else
{
    echo '执行事务失败' . PHP_EOL;
}

//打印执行事务可以看到所有的执行结果
var_dump($result);

执行结果:

执行事务失败
bool(false)

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/110.html

分享给朋友:

“php redis事务” 的相关文章

php 地址转换经纬度

php 地址转换经纬度

//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public  function   getposition($ak,$cityname){ $callback=array('lng'=>0,'l...

php 开启错误提示,php 关闭错误提示

php 开启错误提示,php 关闭错误提示

开启错误提示代码:ini_set("display_errors", "On"); error_reporting(E_ALL | E_STRICT);关闭错误提示代码:error_reporting(E_ALL ^&n...

php数组合并 array_merge和+号的区别

php数组合并 array_merge和+号的区别

array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...

 php监听事件,php触发事件

php监听事件,php触发事件

逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event {     /** &nbs...

PHP中的ArrayAccess用法详解

PHP中的ArrayAccess用法详解

php arrayaccess 官方的说法是让你能以数组的形式访问对象,对于这种php内置接口一直不太明白有什么用,坚持多看文章,终于理解,特来分享,思路不同,更易于理解。(1).创建一个学生类,并且实现arrayaccess 接口。<?php class  studen...

PHP异常处理,PHP自定义错误,PHP记录错误日志

PHP异常处理,PHP自定义错误,PHP记录错误日志

面试中PHP面试官会问调用一个不存在的方法,如何知道是哪个文件哪行调用的?假设方法是getWorkLoad()回答1:开启PHP错误输出,PHP会输出Fatal error: Call to undefined function getWorkLoad() in D:\wwwroot\thinkpa...