是否可以在 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 的完全支持。
我有一个带有 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 的完全支持。