老师,为什么我异步执行5000条redis命令,结果却只得到了1400多条数据?是因为丢包了吗?

来源:5-9 异步Redis详解

ericdemon

2019-09-20

老师,因为我安装的是swoole4.x的版本,所以我是根据文档的操作来做的,但是发现得到的结果和预期的不符,但是swoole官网下面也没有说怎么回事就过来问一下您

go(function () {
    $redis = new Swoole\Coroutine\Redis();
    $redis->setOptions(['compatibility_mode' => true]);
    $redis->connect('127.0.0.1' , 6379);
    $redis->auth('yujiaming..33') ;

    $redis->setDefer();

    for ($i = 0 ; $i < 5000 ; $i++) {
        $redis->sadd('hello' , $i) ;
    }
    $redis->recv();
});

当我执行完这段代码后,去redis客户端里查看记录时发现

127.0.0.1:6379> scard hello
(integer) 1436

老师,这个是怎么回事呀?感觉swoole的版本之间的差异很大,有点跟不上了。。

写回答

1回答

ericdemon

提问者

2019-09-20

老师,我刚刚又看了一次文档和做了一次代码逻辑

$redis->setDefer(); 是并发请求,如果不使用它的话,5000条命令是全部执行了,

这样就比较有趣了。。这个只执行了1436条redis命令是怎么计算出来的呢。。

0
1
愿者__上钩
我用了$redis->setDefer()才可以执行
2019-10-21
共1条回复

Swoole入门到实战打造高性能赛事直播平台

swoole创始人推荐,借助Swoole打造高性能直播平台

2228 学习 · 1062 问题

查看课程