好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP如何基于redis的分布式锁防止高并发重复请求

<?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的分布式锁防止高并发重复请求的详细内容...

  阅读:44次