Gaffey
  • 4
  • 新人请关照

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

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

阅读 430
评论 2019-04-23 提问
    2 个回答

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

    评论 赞赏