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

时间:2018-06-29 15:04:31

标签: php caching redis

我有一个使用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

1 个答案:

答案 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();

我想不出一种方法来执行此操作,尽管其他人可能比我了解得更多:)


编辑:看起来我有点误解了您的问题,因为它更专注于通过单个操作完成此操作。希望以上内容仍然有用,但据我所知,您必须多次执行此操作。