使用节点中的redis获取散列键的所有字段和值

时间:2012-10-08 13:32:43

标签: node.js redis

在red中使用哈希,我需要存储具有多个字段和值的哈希键。 我尝试如下:

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);
client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);
var arrrep = new Array();

client.hgetall("Table1", function(err, rep){
 console.log(rep);
});

输出为:{ Id: '9324325', ReqNo: '23432' }

我只得到一个值。如何获取哈希键中的所有字段和值?如果我错了,请帮助我,让我得到代码。感谢。

1 个答案:

答案 0 :(得分:6)

您获得一个值是因为您覆盖了以前的值。

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);

这会将Id,ReqNo添加到Table1哈希对象。

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);

这会覆盖Table1哈希对象的Id和ReqNo。此时,哈希中只有两个字段。

实际上,您的问题来自于您尝试将关系数据库模型映射到Redis的事实。你不应该。使用Redis,最好根据数据结构和访问路径进行思考。

您需要为每条记录存储一个哈希对象。例如:

HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...

然后,您可以使用一个集来存储ID:

SADD Table1 9324324 9324325

最后检索与Table1集合关联的ReqNo数据:

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo

如果您还想搜索与给定ReqNo相关联的所有ID,那么您需要另一种结构来支持此访问路径:

SADD ReqNo:23432 9324324 9324325

因此,您可以使用以下方法获取记录23432的ID列表:

SMEMBERS ReqNo:23432

换句话说,不要尝试转置关系模型:只需创建支持用例的数据结构。

相关问题