修改通过PHPRedis管道返回的数组,将键作为每个数组元素的索引

修改通过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

我在我的应用程序中使用phpredis,我有以下数据结构。帐户Id充当每个用户的密钥:

    $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;