概念请参考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)
Session在默认情况下是使用客户端的Cookie来保存Session ID的,所以当客户端的cookie出现问题的时候就会影响Session了,如果你单纯的认为SESSION和COOKIE没有联系的话请迅速百度补脑。 &nbs...
因项目需要需要统计用户无限下级计算分销佣金,计算每月分红,计算无限下级团队的业绩,需要先获得某个会员的无限下级成员。先看看数据库中的member表字段id username &...
//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public function getposition($ak,$cityname){ $callback=array('lng'=>0,'l...
001源码:/* * $xml_str是xml字符串 */ function xmltoarray($xml_str) { //禁止XML实体扩展攻击 libxml_disable_entity_loader(true); //拒绝包含...
将jsonp转为PHP数组和对象。/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $as...
elasticsearch的操作都是基于http协议的,已经有现成的php类库,composer安装即可。{ "require": { &...