在REDIS CLI中执行时,命令返回预期结果(将名称前缀为“ new alban ”)。
127.0.0.1:6379> zrangebylex my_places_data_set“[new alban”“[ new alban \ xff”
但是当使用jedis api调用此命令时,它不会返回上述前缀的任何结果,但如果我完成该单词则返回。
无结果 - 管道。 zrangeByLex (my_places_data_set,“[new alban”,“[ new alban \ xff”,0,5);
返回结果 - 管道。 zrangeByLex (my_places_data_set,“[new albany”,“[ new albany \ xff”,0,5);
如果我使用xff代替\ xff发生
无结果 - 管道。 zrangeByLex (my_places_data_set,“[new alban”,“[ new alban xff”,0,5);
返回结果 - 管道。 zrangeByLex (my_places_data_set,“[new albany”,“[ new albany xff”,0,5);
返回结果 - 管道。 zrangeByLex (my_places_data_set,“[new albany”,“[ new alba xff”,0,5);
P.S。 Jedis api签名: zrangeByLex(String key,String min,String max,int offset,int count)
答案 0 :(得分:1)
我通过手动将十六进制代码附加到前缀
来解决了这个问题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));