pipline
redis的pipeline(管道)功能在命令行中没有,但redis是支持pipeline的,而且在各个语言版的client中都有相应的实现。pipline可以打包n条命令,一次性传输到服务端,然后再一次性按顺序返回命令的执行结果。
需要注意的是集群模式对于pipline不太友好,因为pipline要操作的key可能在不同的哈希槽上,此时就需要进行请求的转发,但是这是与pipline的思想相违背的,所以集群模式下不太支持使用pipline的操作。
如果你操作的是字符串类型那么可以用mset和mget,key越多,mset和mget相对于pipeline越快。
PHP使用
$users = [1, 2, 3, 4];
$predis = app('redis')->connection()->client();
$user_values = $predis->pipeline(function ($pipe) use ($users) {
foreach ($users as $val) {
$pipe->get('test' . $val);
}
});
dump($user_values);
结果: