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

Redis性能,将json对象存储为字符串

应瀚
2023-03-14
问题内容

我需要保存一个用户模型,例如:

{ "nickname": "alan",
  "email": ...,
  "password":...,
  ...} // and a couple of other fields

今天,我使用一个Set:users
在这个Set中,我有一个类似于user:alan的
成员在这个成员中,我上面有哈希

这很好,但是我只是想知道是否可以使用以下方法代替上述方法:

仍使用用户集(以轻松获取用户(成员)列表)
在此集中,仅使用键/值存储,例如:

键:alan值:上述用户哈希的字符串化版本

这样,检索记录将变得更加容易(然后我将不得不使用JSON对其进行解析)。

我是Redis的新手,我不确定什么是最好的。你怎么看 ?


问题答案:

您可以使用Redis
哈希数据结构来存储JSONhtml" target="_blank">对象字段和值。例如,您的“用户”集仍然可以用作存储所有用户的列表,并且您的单个JSON对象可以像这样存储在哈希中:

db.hmset("user:id", JSON.stringify(jsonObj));

现在,您可以通过密钥获取所有用户或仅特定用户的密钥(从中只能获取/设置指定的字段/值)。另外,这两个问题可能与您的情况有关。

编辑:(对不起,我没有意识到我们之前讨论过这个问题)

这样,检索记录将变得更加容易(然后我将不得不使用JSON对其进行解析)。

的确如此,但是使用哈希数据结构,您只能获取/设置您需要使用的字段/值。如果您只想更改对象的一部分,则检索整个JSON对象可能会导致性能降低(取决于您执行操作的频率)(另一件事是您每次都需要对对象进行字符串化/解析)。



 类似资料:
  • 编辑:我正计划将mongoDB包含在应用程序的另一部分,以解决一个不同的问题。另外,从redis解析JSON会比从Mongo解析更耗时和占用内存吗?服务器内存会话在多大程度上会成为一个问题?

  • 问题内容: 可以说我有一个由几个属性(ID,名称,Surename,Age)组成的对象(用户)。哪种方法最好在Redis中存储该对象? 将每个属性值存储在专用密钥中,例如,用户:{id}:id,用户:{id}:name,用户:{id}:surename,用户:{id}:age 将整个User对象作为JSON字符串存储在一个密钥中,例如user:{id}:json(密钥的值将如下所示:{“ ID”:

  • 问题内容: 这就是事情- 我想在特定键下的redis中存储本机JS(node.js)对象(闪存套接字引用)。当我简单地做到这一点时,它存储为一个字符串。当我尝试获得价值时,我得到的只是一个字符串。 有机会工作吗?这是我的代码: 问题答案: 下载者:这里的上下文是SET命令,可以存储任意对象。 不,你不能那样做。您应该接受以下事实:Redis将所有内容存储为字符串(毕竟,协议是基于文本的)。Redi

  • 问题内容: 将字符串表示形式转换为对象,但我要相反。对象要转换为JSON字符串,我有一个链接http://www.devcurry.com/2010/03/convert- javascript-object-to-json.html, 但是它需要json2.js jQuery是否具有本机功能方法来做到这一点? 问题答案: jQuery只会在调用本机浏览器方法之前进行一些正则表达式检查。如果不可用

  • 问题内容: 如何使用JavaScript(或jQuery)将描述对象的字符串转换为JSON字符串? 例如:转换这个( 不是 有效的JSON字符串): 到这个: 如果可能,我希望避免使用。 问题答案: 如果字符串是来自可靠来源 ,你可以使用然后的结果。像这样: 请注意,当您使用对象文字时,必须将其括在圆括号中,否则将花括号解析为块而不是对象。 我也同意以下问题的评论,那就是最好以有效的JSON开始编

  • 问题内容: 您如何使JS认为字符串是JSON? 我有一个仅在将JSON对象传递给它的情况下才起作用的函数。如果我以与JSON相同的格式将字符串传递给它,则它将不起作用。因此,我想让该函数认为传递给它的字符串是JSON。该字符串确实采用JSON格式。 我还尝试了以下方法。我通过Ajax输入了字符串,参数“ handle as”为“ JSON”,然后将结果传递给函数。 所以我推断出问题不在弦上。如何将