首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RedisJSON中存储大量对象?

如何在RedisJSON中存储大量对象?
EN

Stack Overflow用户
提问于 2022-08-26 15:11:34
回答 1查看 46关注 0票数 0

假设我有一个JavaScript对象,结构如下:

代码语言:javascript
复制
{
  id: "someUniqueId",
  foo: "otherData",
  bar: 30
}

我想把几百个这样的东西放在RedisJSON里。目前,我正在使用'json-objects'将键节点-redis客户端初始化为空对象。

代码语言:javascript
复制
await client.json.set('json-objects', `$`, {});

然后将对象添加到该键的根对象中,如下所示:

代码语言:javascript
复制
const dataToStore = {
  id: "someUniqueId",
  foo: "otherData",
  bar: 30
}

await client.json.set('json-objects', `$.${dataToStore.id}`, dataToStore as any);

这导致在它们的键'json-objects'下面有一个大对象,如下所示:

代码语言:javascript
复制
{
  "someUniqueId-1": {
    id: "someUniqueId-1",
    foo: "otherData",
    bar: 30
  },
  "someUniqueId-2": {
    id: "someUniqueId-2",
    foo: "otherData2",
    bar: 31
  },
  "someUniqueId-3": {
    id: "someUniqueId-3",
    foo: "otherData3",
    bar: 32
  },
  and so on...
}

然后,我可以使用路径查询和更新:

代码语言:javascript
复制
await client.json.set('json-objects', `$.${id}.foo`, "someUpdatedData");

我的问题是:是存储数据的最佳方式,还是将每个对象存储在自己的RedisJSON键上更有效,还是以另一种方式存储?我唯一的问题是,当我不可避免地需要在RedisJSON中缓存其他数据类型时,如何区分objectTypeAobjectTypeB?我可以在键前加上一个数据类型吗?如下所示:

代码语言:javascript
复制
const dataToStore = {
      id: "someUniqueId",
      foo: "otherData",
      bar: 30
    }

await client.json.set(dataToStore.id, `$`, dataToStore as any);
// -OR-
await client.json.set(`objectTypeA-${dataToStore.id}`, `$`, dataToStore as any);

这并不是我最喜欢的方法。也许我现在所做的实际上并不是JSON路径查找的效率那么低?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-26 16:03:13

把它分散到多个键上才是方法。

把所有东西都放在一个大键上意味着一个大键在一个碎片上。当您只有一个节点时,这不是一个大问题。但是当你需要一个集群的时候,这个键仍然在一个碎片上。集群中的其他碎片将不被使用。这样它就不会变小。

这就是我们所说的“热键”,它可能是各种痛苦和麻烦的根源。

在键名中前缀类型的想法是Redis中的常见模式,是处理此问题的一种非常合适的方法。我们称它们为关键空间。所以,好主意。

通常,我们使用冒号来分隔键空间。因此,如果我存储的是大脚目击、UFO目击和Redis,您可能会使用这样的键空间:

代码语言:javascript
复制
sightings:bigfoot:12345
sightings:ufo:67890

结肠只是个惯例-随便你用吧。别让我告诉你怎么过你的生活!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73503156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档