将列表与哈希表进行匹配

问题描述 投票:0回答:1

我使用以下方法为一些项目设置了哈希表:

RPUSH itemList:0 A
RPUSH itemList:0 B
RPUSH itemList:0 C

HSET items item:A A_VALUE
HSET items item:B B_VALUE
HSET items item:C C_VALUE

我目前正在使用:

LRANGE itemList:0 0 5

获取项目列表

["A", "B", "C"]

我该如何修改它才能用

{"A":"A_VALUE", "B":"B_VALUE", "C":"C_VALUE"}
恢复对象?

php redis
1个回答
0
投票

如果不编写脚本,就无法做到这一点。

如果你的redis版本低于2.6,只能使用这样的代码(简单的php版本)来完成:

$data = $redis->lRange('itemList:0', 0, 5);

$valueKeys = array_map(
    function($key) {
        return 'item:' . $key;
    } 
    , array_unique($data)
);

$values = $redis->hMGet('items', $valueKeys);
$ret = [];
foreach ($data as $key) {
   $ret[$key] = $values['item:' . $key];
}

如果您使用Redis 2.6+,您可以编写LUA存储过程来获取数据(与php逻辑相同)。

© www.soinside.com 2019 - 2024. All rights reserved.