2

我有一个带有 rejson 的 Redis-Server,并且想要检索嵌套数组的一部分。

数组不断变大,因为我使用后台作业添加数据。但我不需要所有信息,只需要其中的一部分。但似乎没有 JSON.ARRRANGE 或“LRANGE”之类的。还有其他存档方式吗?

示例对象结构:

{ 
 cars:
[
      {company: "Ford", timestamp:"123133131" },
      {company: "Mercedes", timestamp:"12165433131" },
],
 planes: 
[
      {company: "Foo", timestamp:"3123213114"},
      {company: "Bar", timestamp:"3123213114"},
]
}

我想访问汽车阵列,但只是其中的一部分,比如说最近的 300 个。

我是redis初学者,所以也许可以以某种方式“查询”数据。

非常感谢!

4

2 回答 2

1

不,在其当前版本 (v1) 中,RedisJSON 不提供获取数组范围的方法。预计这将成为下一个版本的一部分,该版本将包括对 JSONPath 的完全支持。

于 2019-07-12T13:32:39.873 回答
0

您可以通过对存储数据的方式稍作修改来实现这一点。1/ 将汽车、飞机等存储在单独的 redis LISTS 中。所以对于关键的“汽车”,你的 redis 列表看起来像这样:

[
      {company: "Ford", timestamp:"123133131" },
      {company: "Mercedes", timestamp:"12165433131" },
        ………………. MORE CARS …………
],

同样是飞机的单独列表。

2/ 现在,每当您使用 LPUSH 将元素附加到汽车 LIST 时,您都可以执行 LTRIM 直到 N 以仅在列表中包含最近的 N 条记录。

您甚至可以优化 LTRIM 操作的数量(而不是每次在 LPUSH 添加元素之后都这样做):https ://stackoverflow.com/a/37875025/533399

于 2019-07-12T09:50:44.440 回答