当前位置: 首页 > 知识库问答 >
问题:

Redis和MongoDB;如何存储大型JSON对象,性能问题

漆雕升
2023-03-14

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

共有1个答案

师增
2023-03-14

express-session有各种会话存储选项来保存会话数据。

AFAIK中,这些都通过相同的原理工作:它们将会话对象序列化为JSON字符串,并将该字符串存储在存储区中(使用会话id作为密钥)。

换句话说,您使用第二个键将用户数据作为JSON字符串存储在Redis或MongoDB中的想法基本上与express-session在使用Redis或MongoDB存储时的做法完全相同。因此,我不期望从这方面获得任何性能上的好处。

Redis和MongoDB之间也有一个区别,那就是Redis主要是内存中的,而且更轻量级。然而,MongoDB更像是一个“真正的”数据库,它允许更复杂的查询,并且在可伸缩性方面有更多的选择。

因为在我看来,您只是在会话中存储临时数据(因为实际数据存储在MySQL上),所以我建议如下:

  • 如果在会话中存储的数据总量符合内存要求,请使用Redis会话存储;
  • 如果没有,请使用MongoDB会话存储。
 类似资料:
  • 问题内容: 我需要保存一个用户模型,例如: 今天,我使用一个Set:users 在这个Set中,我有一个类似于user:alan的 成员在这个成员中,我上面有哈希 这很好,但是我只是想知道是否可以使用以下方法代替上述方法: 仍使用用户集(以轻松获取用户(成员)列表) 在此集中,仅使用键/值存储,例如: 键:alan值:上述用户哈希的字符串化版本 这样,检索记录将变得更加容易(然后我将不得不使用JS

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

  • 我使用laravel Redis cache facade将我的对象数据(JSON编码)推送到Redis,并使用Node.js Redis模块使用关键字搜索取回数据。我的JSON字符串像这样存储在Redis中。这里的字符串破坏了我在节点上的JSON解析。Redis存储了我的json_encoded字符串,附加了一些。 有什么建议如何解决这个问题,或者我应该看看redis的其他数据类型(列表或哈希)

  • 问题内容: 我有一个要存储在Redis中的对象数组。我可以分解数组部分,并将它们存储为对象,但是我不知道如何获得类似 然后根据名称搜索数据库,并获取返回的密钥。我需要这样的东西。但几乎无法做到正确。 首先是使这一部分正确。 其次是以某种方式从值中获取密钥,即 我觉得很难。或者,我可以将其直接存储为对象数组并使用简单的for循环。 请建议哪种路线最适合某些实现? 问题答案: 我发现工作是将密钥存储为

  • 问题内容: hmset函数可以设置每个字段的值,但是我发现,如果值本身是一个复杂的结构化对象,则从hget返回的值是一个序列化的字符串,而不是原始对象 例如 i的类型是字符串,而不是python对象,除了手动解析每个字段外,还有什么方法可以解决此问题? 问题答案: 您无法在Redis中创建嵌套结构,这意味着您无法(例如)在本地Redis哈希图中存储本地Redis列表。 如果确实需要嵌套结构,则可能

  • 我正在寻找更好的性能(转换时间应该非常少)。 本文显示的是来自这个答案的不同API之间的性能统计。 例如,我的发现是我提到的第一个链接(只有很少的记录): null 请帮帮我。