管道运用 pipeline
管道:当你需要在一次操作中发送多个命令到服务器的时候应该使用管道,这次命令会在一次操作中指执行
$ids = Account::select(['id'])->where(
[
"status" => 1"
]
)->take(20)->get();
$idsCurrentSet= array_column($ids->toArray(), "id");
$initCacheKey ="execute:lm:test:english:11:init";
$numPerSet=10;
Redis::pipeline(
function ($pipe) use ($initCacheKey, $idsCurrentSet, $numPerSet) {
$current = 0;
while ($currentSet = array_slice($idsCurrentSet, $current, $numPerSet)) {//10
array_unshift($currentSet, $initCacheKey);//$initCacheKey插入到数组$currentSet的开头
call_user_func_array([$pipe, 'sAdd'], $currentSet);//增加set集合元素
$current += (count($currentSet) - 1);
}
}
);
补集 sdiffStore
//将两个表补集元素 copy 到第$keyUsing表中
Redis::sdiffStore($keyUsing, $keyInit, $keyUsed);