【问题标题】:Cursor Pagination with RedisJSON使用 RedisJSON 进行光标分页
【发布时间】:2022-10-09 14:06:25
【问题描述】:

我正在使用 Redis 使用具有 IdName 字段的模型来存储 JSON 数据。我的目标是使用Name 作为游标在这些数据上实现游标分页。我意识到这不是唯一的,我需要做一些额外的工作来解决使用该特定字段作为光标所带来的问题。但是,我正在努力寻找一种方法,甚至开始使用 Redis 命令实现基本的光标分页。 Redis 有使用“搜索”模块进行各种字符串操作的选项,但这些选项仅限于在给定字符串内搜索,没有比较。我在这里吠叫错误的树并且光标分页是不可能的吗?还是我的设计中缺少一些基本的东西?

【问题讨论】:

    标签: redis graphql


    【解决方案1】:

    Redis 有使用“搜索”模块进行各种字符串操作的选项,但这些选项仅限于在给定字符串内搜索,没有比较。

    您能否举例说明不在给定字符串内的所需比较?

    搜索查询可以进行一些比较。

    对于光标,可以使用FT.CURSOR,例如:

    127.0.0.1:6379> JSON.SET key1 $ '{"Id": 100, "Name": "foo", "data": "val1"}'
    OK
    127.0.0.1:6379> JSON.SET key2 $ '{"Id": 200, "Name": "bar", "data": "val2"}'
    OK
    127.0.0.1:6379> JSON.SET key3 $ '{"Id": 300, "Name": "foo", "data": "val3"}'
    OK
    127.0.0.1:6379> FT.CREATE idx ON JSON SCHEMA '$.Id' as id NUMERIC '$.Name' as name TAG
    OK
    127.0.0.1:6379> FT.AGGREGATE idx '@name:{foo}' LOAD 2 @id @name WITHCURSOR COUNT 1
    1) 1) (integer) 1
       2) 1) "id"
          2) "300"
          3) "name"
          4) "foo"
    2) (integer) 17284697
    127.0.0.1:6379> FT.CURSOR READ idx 17284697 COUNT 1
    1) 1) (integer) 1
       2) 1) "id"
          2) "100"
          3) "name"
          4) "foo"
    2) (integer) 17284697
    127.0.0.1:6379> FT.CURSOR READ idx 17284697 COUNT 1
    1) 1) (integer) 0
    2) (integer) 0
    127.0.0.1:6379> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-02
      • 2020-06-28
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多