"v1", "v2", "v-6ren">
gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:15:13 25 4
gpt4 key购买 nike

我有一个 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')));

但这只是将每个键的值存储为“数组”而不是指定的实际数组。

这是否可以使用像 mset 这样的单个命令来完成,或者我是否需要迭代我的数据并使用像 lPush 这样的东西分别设置每个键?

phpredis 文档:https://github.com/phpredis/phpredis

最佳答案

因此,除了使用 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();

我想不出在单一操作中做到这一点的方法,其他人可能会出现,但谁比我更了解 :)


编辑: 看起来我有点误解了您的问题,因为它更侧重于在单个操作中执行此操作。希望以上内容仍然有用,但据我所知,您必须对多个对象执行此操作。

关于php - 将具有多个值的多个键设置为 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51104639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com