请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

老师,因为我安装的是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的版本之间的差异很大,有点跟不上了。。

正在回答 回答被采纳积分+3

1回答

提问者 ericdemon 2019-09-20 12:57:03

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

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

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

0 回复 有任何疑惑可以回复我~
  • 我用了$redis->setDefer()才可以执行
    回复 有任何疑惑可以回复我~ 2019-10-21 16:54:44
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号