我使用Redis存储JSON数据,模型中包含Id
和Name
字段。我的目标是使用Name
作为游标来实现对这些数据的游标分页。我意识到这并不是唯一的,我需要做一些额外的工作来解决使用这个特定字段作为游标所带来的问题。然而,我很难找到一种方法,甚至开始用Redis命令实现基本的游标分页。Redis有使用" search“模块进行各种字符串操作的选项,但这些选项仅限于在给定字符串内进行搜索,不需要进行比较。我是不是在这里乱叫错了树,游标分页是不可能的?还是在我的设计中缺少了一些基本的东西?
发布于 2022-10-09 06:06:25
Redis有使用" search“模块进行各种字符串操作的选项,但这些选项仅限于在给定字符串内进行搜索,不需要进行比较。
您能给出一个示例,说明在给定字符串内所需的比较吗?
搜索查询可以进行一些比较。
对于游标,可以使用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>
https://stackoverflow.com/questions/73841025
复制相似问题