gpt4 book ai didi

redis - 使用 jedis api 的 redis 上的 ZRANGEBYLEX 命令不返回任何结果

转载 作者:IT王子 更新时间:2023-10-29 06:14:32 31 4
gpt4 key购买 nike

在 REDIS CLI 中执行时,下面的命令返回预期结果(地名带有前缀“new alban”)。

127.0.0.1:6379> zrangebylex my_places_data_set “[新阿尔类” “[新阿尔类\xff”

  1. “新奥尔巴尼...”
  2. “新奥尔巴尼 p...”
  3. “新奥尔巴尼...”

但是当使用 jedis api 调用此命令时,它不会返回上述前缀的任何结果,但会在我完成单词时返回。

没有结果 - pipeline.zrangeByLex(my_places_data_set, "[new alban", "[new alban\xff", 0, 5);

返回结果 - pipeline.zrangeByLex(my_places_data_set, "[new albany", "[new albany\xff", 0, 5);

如果我使用 xff 而不是\xff 会发生以下情况

没有结果 - pipeline.zrangeByLex(my_places_data_set, "[new alban", "[new albanxff", 0, 5);

返回结果 - pipeline.zrangeByLex(my_places_data_set, "[new albany", "[new albanyxff", 0, 5);

返回结果 - pipeline.zrangeByLex(my_places_data_set, "[new albany", "[new albaxff", 0, 5);

附言Jedis api 签名:zrangeByLex(String key, String min, String max, int offset, int count)

最佳答案

我通过手动将十六进制代码附加到前缀解决了这个问题

byte[] prefixByte = ("[" + prefix).getBytes();
byte[] prefixByteExtended = Arrays.copyOf(prefixByte, prefixByte.length + 1);
prefixByteExtended[prefixByte.length] = (byte) 0xFF;
pipeline.zrangeByLex(my_places_data_set, ("[" + prefix), new String(prefixByteExtended), 0, 5));

关于redis - 使用 jedis api 的 redis 上的 ZRANGEBYLEX 命令不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32825864/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com