0

swoole多协程方式获取redis里面同一个值,有部分数据为false

$cnt = 1000;

for ($i = 0; $i < $cnt; $i++) {
    go(function () {
        $redis = new Co\Redis();
        $redis->connect('127.0.0.1', 6379);
        $key = $redis->get('key');
        var_dump($key);
    });
}

输出

...
string(3) "123"
string(3) "123"
string(3) "123"
string(3) "123"
string(3) "123"
bool(false)
bool(false)
bool(false)
string(3) "123"
bool(false)
bool(false)
...

redis存放的数据以及redis客户端最大连接数设置

127.0.0.1:6379> get key
"123"
127.0.0.1:6379> CONFIG GET maxclients
1) "maxclients"
2) "4064"

实践过将$cnt改小(100或200)没有出现false情况。不知道为什么1000的时候会出现这种情况

Gaffey 4
2019-04-23 提问
2 个回答
0

已采纳

我测试了没有问题呀!你可以

$cnt = 1000;

for ($i = 0; $i < $cnt; $i++) {

go(function () {
    $redis = new Co\Redis();
    $redis->connect('127.0.0.1', 6379);
    $key = $redis->get('key');
    var_dump($redis->errMsg);
    var_dump($key);
});

}

0

你这个是不是超出自己设定的 redis 最大连接数了,没有连接上导致的吧

撰写答案

推广链接