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

php redis事务

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

概念请参考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可变变量的作用

<!doctype html> <html> <head> <meta charset="utf-8"> <title>demo</title> </head> <bod...

PHP模拟并发请求

PHP模拟并发请求

原理:使用curl_init()创建多个请求实例,再使用curl_multi_init()批量执行创建的多个请求实例。文件1:curl.php<?php  $threads=500;//并发请求次数 $url='http://blog.cn/index.php?';...

php守护进程

php守护进程

<?php /**  * daemonize让当前脚本为守护进程执行  * @param string $callback 匿名函数  */ function daemonize($callback) {...

php new class

php new class

<?php $member = new class {     public function getInfo()     {    ...

php finally使用

php finally使用

<?php /**  * @throws Exception  */ function curl() {     throw  new \Exception('err...

php限制方法返回值类型

php限制方法返回值类型

php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int {    &nb...