使用绝地api在redis上执行ZRANGEBYLEX命令不会返回任何结果

使用绝地api在redis上执行ZRANGEBYLEX命令不会返回任何结果,redis,jedis,Redis,Jedis,在REDIS CLI中执行以下命令时,返回预期结果(前缀为“new alban”的地名) 127.0.0.1:6379>zrangebylex我的位置数据集“[new alban”“[new alban\xff” “新奥尔巴尼f…” “新奥尔巴尼p…” “新奥尔巴尼河……” 但当使用jedisapi调用此命令时,它不会返回上述前缀的任何结果,而是在我完成单词后返回 无结果-管道。zrangeByLex(我的位置数据集,“[new alban]”,“[new alban\xff”,0,5) 返回结

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

127.0.0.1:6379>zrangebylex我的位置数据集“[new alban”“[new alban\xff”

  • “新奥尔巴尼f…”
  • “新奥尔巴尼p…”
  • “新奥尔巴尼河……”
  • 但当使用jedisapi调用此命令时,它不会返回上述前缀的任何结果,而是在我完成单词后返回

    无结果-管道。zrangeByLex(我的位置数据集,“[new alban]”,“[new alban\xff”,0,5)

    返回结果-管道。zrangeByLex(我的位置数据集,“[new albany]”,“[new albany\xff”,0,5)

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

    无结果-管道。zrangeByLex(我的位置数据集,“[new alban]”,“[new albanxff”,0,5)

    返回结果-管道。zrangeByLex(我的位置数据集,“[new albany]”,“[new albanyxff”,0,5)

    返回结果-管道。zrangeByLex(my_放置数据集,“[new albany]”,“[new albanyxff”,0,5)


    p.S.Jedis api签名:zrangeByLex(字符串键、字符串最小值、字符串最大值、整数偏移量、整数计数)

    我通过在前缀中手动添加十六进制代码解决了这个问题

    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));