当前位置: 首页 > 面试题库 >

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

湛博易
2023-03-14
问题内容

用红色表示正在使用哈希,我需要存储具有多个字段和值的哈希键。我尝试如下:

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' }

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


问题答案:

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

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

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



 类似资料:
  • 我目前在我的Redis表中存储了大约50k个哈希,每个哈希都有5个键/值对。我每天运行一次批处理作业,更新散列值,包括将一些键值设置为散列中另一个键值。 下面是我的python代码,它迭代键,如果给定哈希存在新的\u代码值,则将旧的\u代码设置为新的\u代码: 我觉得有点奇怪,我必须迭代两次键才能获得相同的结果,有更好的方法吗? 另一件我想弄明白的事情是如何以最佳性能获取所有哈希值。以下是我目前的

  • hvals key 返回hash的所有value

  • 问题内容: 我将数据存储在Redis中。我将它存储在GUID,createday和它的大小中。 因此,我定义以下内容: 我希望查看我的数据库中的所有文件。因此,我尝试以下操作: 但是res是。我该怎么做? 问题答案: 返回存储在key处的哈希的所有字段和值,您不能指定掩码: http //redis.io/commands/hgetall 您可以调用获取符合条件的所有键的列表,然后循环获取所有值。

  • hgetall 返回hash的所有filed和value

  • hkeys key 返回hash的所有field

  • 问题内容: 有一篇关于Redis命令以获取所有可用键的文章,但我想使用Python做到这一点。 有什么办法吗? 问题答案: 采用 优于大量密钥,因为它为您提供了可以使用的迭代器,而不是尝试将所有密钥加载到内存中。 我的redis中有一个1B记录,而且我永远都无法获得足够的内存来一次返回所有密钥。 一对一扫描键 这是一个python代码段,用于从商店中获取与某个模式匹配的所有键,并一一删除它们: 批