将列表与哈希表匹配

时间:2013-11-28 14:22:29

标签: redis

我使用以下方法为几个项目设置哈希表:

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"}修改此对象以获取对象?

1 个答案:

答案 0 :(得分:1)

没有脚本就无法做到这一点。

如果您的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逻辑相同)。