用红色表示正在使用哈希,我需要存储具有多个字段和值的哈希键。我尝试如下:
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' }
{ Id: '9324325', ReqNo: '23432' }
我只得到一个价值。如何获取哈希键中的所有字段和值?如果我错了,请帮助我,让我获取代码。谢谢。
您获得一个值是因为您覆盖了先前的值。
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
换句话说,不要尝试转置关系模型:只需创建支持用例的数据结构即可。