修改通过PHPRedis管道返回的数组,将键作为每个数组元素的索引
我在我的应用程序中使用phpredis,我有以下数据结构。帐户Id充当每个用户的密钥:修改通过PHPRedis管道返回的数组,将键作为每个数组元素的索引,php,redis,phpredis,Php,Redis,Phpredis,我在我的应用程序中使用phpredis,我有以下数据结构。帐户Id充当每个用户的密钥: $data = array( "accId1"=> array("userId" => "user0234", "username" => "apples", "appversion" => "1.0"), "accId2"=> array("userId" => "user2342", "username" => "roses
$data = array(
"accId1"=> array("userId" => "user0234", "username" => "apples", "appversion" => "1.0"),
"accId2"=> array("userId" => "user2342", "username" => "roses", "appversion" => "2.0")
....
);
为了在Redis中存储上述内容,我使用如下管道:
$pipeline = $redis->multi(Redis::PIPELINE);
foreach ($data as $accId => $userInfo) {
$pipeline->hMSet($accId, $userInfo);
}
$pipeline->exec();
检索:
$accIdSet = getAccountIds();
$pipeline = $redis->multi(Redis::PIPELINE);
foreach ($accIdSet as $accId) {
$pipeline->hMGet($accId, array("userId", "username", "appversion"));
}
return $pipeline->exec();
这将返回以下数组:
(
[0] => Array
(
[userId] => user0234
[username] => apples
[appverion] => 1.0
)
[1] => Array
(
[userId] => user2342
[username] => roses
[appversion] => 2.0
)
)
这一切都很好,除了数组的索引。我正在使用的系统要求索引是存储在Redis中的实际键,而不是它当前拥有的数字索引
现在我知道我可以迭代这个数组并使用一些PHP将索引更改为实际的键,但是在开始之前,我想知道是否有一个更高效、更干净的选项来解决这个问题
我愿意接受任何建议,即使它改变了我用来与Redis交互的功能。谢谢大家! 我也遇到了这个问题,似乎redis自己可以直接解决。也许这是一个解决办法:
$data = $pipeline->exec();
foreach($data as $k => $v) {
$data[$k]['accId1'] = $accIdSet[$k];
}
return $data;