<?php
$redis=new Redis();
$redis->connect("127.0.0.1",6379);
//高并发时防止重复请求
//渠道系统传递过来的key
$lockKey='lock:18806767777&37781991111629092&taoshihan';
$resultKey='res:18806767777&37781991111629092&taoshihan';
//如果已经查询过值,可以直接返回
$info=$redis->get($resultKey);
if($info){
exit($info);
}
//如果没有值的,获取锁
$lock=$redis->set($lockKey, 1, ['nx', 'ex'=>10]);
if($lock){
//请求外部系统获取结果,比如响应结果比较慢
sleep(8);
$info='{"name":"taoshihan"}';
$ret=$redis->set($resultKey,$info);
if($ret){
//删除锁
$redis->del($lockKey);
exit($info);
}
}
echo "请稍后重试!";推荐学习:PHP教程
以上就是PHP如何基于redis的分布式锁防止高并发重复请求的详细内容,更多请关注Gxlcms其它相关文章!
查看更多关于PHP如何基于redis的分布式锁防止高并发重复请求的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did57772