是否可以在 rejson 数组中使用 LRANGE?

Is it possible to use LRANGE in rejson array?

我有一个带有 rejson 的 Redis 服务器,我想检索嵌套数组的一部分。

数组越来越大,因为我使用后台作业添加数据。但我不需要所有的信息,只需要其中的一部分。但是好像没有JSON.ARRRANGE或者"LRANGE"什么的。还有其他存档方式吗?

示例对象结构:

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

我想访问汽车数组,但只是其中的一部分,比方说最近的 300 辆。

我是 Redis 初学者,所以也许可以 "query" 以某种方式获取数据。

非常感谢!

您只需稍微修改存储数据的方式即可实现此目的。 1/ 将汽车、飞机等存储在单独的 redis 列表中。 所以对于关键的“汽车”,您的 redis 列表将如下所示:

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

同样是一个单独的飞机列表。

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

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

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