Php 将具有多个值的多个键设置为Redis

Php 将具有多个值的多个键设置为Redis,php,caching,redis,Php,Caching,Redis,我有一个php后端,使用phpredis(redis服务器的php客户端)将键值对存储到redis服务器。我需要存储的数据的格式如下: "key1" => "v1", "v2", "v3" "key2" => "m1", "m2", "m3" "key3" => "n1", "n2", "n3" ... 根据我的研究,我可以使用mset命令在redis中设置多个键,如下所示: $redis->mSet(array('key0' => 'value0', 'key1

我有一个php后端,使用
phpredis
(redis服务器的php客户端)将键值对存储到redis服务器。我需要存储的数据的格式如下:

"key1" => "v1", "v2", "v3"
"key2" => "m1", "m2", "m3"
"key3" => "n1", "n2", "n3"
...
根据我的研究,我可以使用
mset
命令在redis中设置多个键,如下所示:

$redis->mSet(array('key0' => 'value0', 'key1' => 'value1'));
但我真正需要的是这样的东西:

$redis->mSet(array('key0' => array('v1','v2','v3') , 'key1' => array('m1', 'm2', 'm3')));
但这只是将每个键的值存储为“Array”,而不是指定的实际数组

这可以通过像
mset
这样的单个命令来实现吗?或者我需要迭代数据并使用像
lPush
这样的命令分别设置每个键吗


phpredis文档:

因此,您可以使用
sADD
来获得所需的功能,而不是使用
mSet

$redis->sAdd($key, ...$data);
关于它的完整文档

这将意味着迭代并分多个步骤进行,为此我建议将reading和包含更多信息的非无耻插件结合起来

看起来像

$redis    = new Redis();
$pipeline = $redis->multi(Redis::PIPELINE);

foreach ($dataset as $data) {
    $pipeline->sAdd($data['key'], ...$data['values']);
}

$pipeline->exec();
我想不出在一次单独的手术中有什么方法可以做到这一点,但可能会有比我更了解的人出现:)



编辑:看起来我有点误解了你的问题,因为它更多地集中在一次操作中。希望上面的内容仍然有用,但据我所知,您必须使用多个来执行此操作。

@Mikey这意味着我将迭代我的数据,并在每次迭代时执行类似的操作:$redis->sAdd('key1','v1','v2','v3'),对或者我可以将它与mset这样的东西结合起来,在一次操作中完成它吗?