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

Gaffey
  • 4
新手上路,请多包涵

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的时候会出现这种情况

回复
阅读 789
2 个回答
✓ 已被采纳

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

$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);
});

}

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

你知道吗?

宣传栏