我有很多字符串,每个字符串映射到一个 json。有没有办法将json数据保存在Redis/Valkey有序集中按字符串字典顺序排序。或者Redis/Valkey中是否有任何数据结构可以在这种情况下使用。 我想避免从有序集中获取按字典顺序排序的字符串列表,然后发送请求以使用每个字符串的字符串从哈希中获取 json 的值。
您所描述的内容可以通过 Redis 的搜索和查询功能来访问:https://redis.io/docs/latest/develop/interact/search-and-query/
您需要显式索引您的数据,然后您可以按字典顺序对其进行排序:
127.0.0.1:6379> FT.CREATE test ON JSON prefix 1 test: SCHEMA $.name as name tag SORTABLE
OK
127.0.0.1:6379> JSON.SET test:1 $ '{"name":"foo"}'
OK
127.0.0.1:6379> JSON.SET test:2 $ '{"name":"bar"}'
OK
127.0.0.1:6379> JSON.SET test:3 $ '{"name":"baz"}'
OK
127.0.0.1:6379> FT.SEARCH test * SORTBY name asc
1) (integer) 3
2) "test:2"
3) 1) "name"
2) "bar"
3) "$"
4) "{\"name\":\"bar\"}"
4) "test:3"
5) 1) "name"
2) "baz"
3) "$"
4) "{\"name\":\"baz\"}"
6) "test:1"
7) 1) "name"
2) "foo"
3) "$"
4) "{\"name\":\"foo\"}"
127.0.0.1:6379> FT.SEARCH test * SORTBY name desc
1) (integer) 3
2) "test:1"
3) 1) "name"
2) "foo"
3) "$"
4) "{\"name\":\"foo\"}"
4) "test:3"
5) 1) "name"
2) "baz"
3) "$"
4) "{\"name\":\"baz\"}"
6) "test:2"
7) 1) "name"
2) "bar"
3) "$"
4) "{\"name\":\"bar\"}"