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

时间:2019-07-12 09:45:19

标签: redis rejson

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

该数组不断变大,因为我添加了带有后台作业的数据。但是我不需要所有信息,仅一部分。但是似乎没有JSON.ARRRANGE或“ LRANGE”或其他东西。还有其他存档方法吗?

示例对象结构:

<!-- if the gtin12 should be visible on the page -->
<article itemscope itemtype="http://schema.org/Product">
  <p itemprop="gtin12">{$product.upc}</p>
</article>

我想访问cars数组,但只访问其中一部分,可以说是最近的300。

我是一名Redis初学者,因此也许可以以某种方式“查询”数据。

非常感谢您!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以通过稍作修改来实现此目的,以存储数据。 1 /将汽车,飞机等存放在单独的redis列表中。 因此对于关键的“汽车”,您的redis列表如下所示:

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

类似地,飞机的单独清单。

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

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