我有一个使用phpredis
(redis服务器的php客户端)的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')));
但这只是将每个键的值存储为“数组”,而不是指定的实际数组。
这是否可以使用诸如mset
之类的单个命令执行?还是需要使用lPush
之类的方法来迭代数据并分别设置每个密钥?
phpredis文档:https://github.com/phpredis/phpredis
答案 0 :(得分:1)
因此,可能不用mSet
就能使用sADD
来获得所需的功能。
$redis->sAdd($key, ...$data);
here上的完整文档。
这意味着要分多次进行迭代,建议将其读入Redis Pipelines和包含更多信息的无耻插头link。
看起来像什么
$redis = new Redis();
$pipeline = $redis->multi(Redis::PIPELINE);
foreach ($dataset as $data) {
$pipeline->sAdd($data['key'], ...$data['values']);
}
$pipeline->exec();
我想不出一种方法来执行此操作,尽管其他人可能比我了解得更多:)
编辑:看起来我有点误解了您的问题,因为它更专注于通过单个操作完成此操作。希望以上内容仍然有用,但据我所知,您必须多次执行此操作。