我正在向Redis集合中添加大量的数据点:
$t = 0;
$redis = Redis::Connection();
foreach($adv as $a) {
$t = $t + 1;
print($t); //Prints to log
$test = $redis -> sadd('database/ab/AL', $a -> id);
print($test); //Prints to log
}
当我调用
redis->scard('database/ab/AL')
时,我得到了结果9832
,而我应该得到的答案是9866
。
$t
是我放置的一个计数器,用来检查循环执行了多少次,运行循环后,$t
为9866
,这很奇怪,因为scard返回的是9832
。然后我想也许有重复添加,所以我记录了
sadd
的响应。1 [2015-06-29 16:24:55] local.INFO: 1 [] []
2 [2015-06-29 16:24:55] local.INFO: 1 [] []
3 [2015-06-29 16:24:55] local.INFO: 1 [] []
4 [2015-06-29 16:24:55] local.INFO: 1 [] []
5 [2015-06-29 16:24:55] local.INFO: 1 [] []
6 [2015-06-29 16:24:55] local.INFO: 1 [] []
...
9861 [2015-06-29 16:24:59] local.INFO: 1 [] []
9862 [2015-06-29 16:24:59] local.INFO: 1 [] []
9863 [2015-06-29 16:24:59] local.INFO: 1 [] []
9864 [2015-06-29 16:24:59] local.INFO: 1 [] []
9865 [2015-06-29 16:24:59] local.INFO: 1 [] []
9866 [2015-06-29 16:24:59] local.INFO: 1 [] []
整个日志中没有零,这意味着每个被添加的元素都是唯一的。此外,
9866
条日志调用与 scard
结果相矛盾。
我已经尝试使用 redis-cli 进行检查,但仍然得到错误的结果。
这是怎么回事?
SADD
的响应?我几乎可以确定你有重复项,并且计数是正确的,但在这种情况下,流水线可能会影响响应。 - Itamar Haber