老师,为什么我异步执行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命令是怎么计算出来的呢。。
012019-10-21
相似问题