在红色中使用哈希,我需要存储具有多个字段和值的哈希键.我试过如下:
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);
});
Run Code Online (Sandbox Code Playgroud)
输出是: { Id: '9324325', ReqNo: '23432' }
我只得到一个价值.如何获取哈希键中的所有字段和值?如果我错了,请帮助我,让我得到代码.谢谢.
您将获得一个值,因为您覆盖了以前的值.
client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);
Run Code Online (Sandbox Code Playgroud)
这会将Id,ReqNo添加到Table1哈希对象.
client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);
Run Code Online (Sandbox Code Playgroud)
这将覆盖Table1哈希对象的Id和ReqNo.此时,哈希中只有两个字段.
实际上,您的问题来自于您尝试将关系数据库模型映射到Redis的事实.你不应该.使用Redis,最好根据数据结构和访问路径进行思考.
您需要为每条记录存储一个哈希对象.例如:
HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用一个集来存储ID:
SADD Table1 9324324 9324325
Run Code Online (Sandbox Code Playgroud)
最后,检索与Table1集合关联的ReqNo数据:
SORT Table1 BY NOSORT GET # GET Id:*->ReqNo
Run Code Online (Sandbox Code Playgroud)
如果您还要搜索与给定ReqNo关联的所有ID,则需要另一个结构来支持此访问路径:
SADD ReqNo:23432 9324324 9324325
Run Code Online (Sandbox Code Playgroud)
因此,您可以使用以下命令获取记录23432的ID列表:
SMEMBERS ReqNo:23432
Run Code Online (Sandbox Code Playgroud)
换句话说,不要尝试转置关系模型:只需创建自己的数据结构来支持您的用例.
| 归档时间: |
|
| 查看次数: |
3970 次 |
| 最近记录: |