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

php redis事务

高老师6年前 (2019-11-01)PHP1617

概念请参考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中的ArrayAccess用法详解

PHP中的ArrayAccess用法详解

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

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

【一】PHP多进程学习-简单创建父子进程.理解父子进程运行流程

(1).学习的目标:学会创建父子进程,并且能够区分当前进程是父还是子;了解父进程执行过程,子进程执行过程;能够用多进程执行任务(2).相关函数学习:    (2.1)pcntl_fork()执行时:       &nbs...

PHP yield  PHP协程,PHP协程用法学习

PHP yield PHP协程,PHP协程用法学习

【一】.迭代器迭代是指反复执行一个过程,每执行一次叫做一次迭代。比如下面的代码就叫做迭代:1.  <?php   2.  $data = ['1', '2', &...

pcntl_signal(): Error assigning signal

pcntl_signal(): Error assigning signal

当我想在一个进程中监听kill 和 kill -9命令报了这个错误。//监听kill pcntl_signal(SIGTERM, function () {     posix_kill(0, SIGTERM); });...

PHP Warning:  ftok(): Project identifier is invalid

PHP Warning: ftok(): Project identifier is invalid

在使用ftok生成ipc进程通信key尝试将第二个参数项目标识符传入字符串报错:PHP Warning:  ftok(): Project identifier is invalid,查阅资料发现第二个字符串只能是1个字符串,长度为1....

PHP最快方式模拟curl,PHP最快爬虫模拟方法

PHP最快方式模拟curl,PHP最快爬虫模拟方法

有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...