Java 绝地武士改变了Redis的语义?

Java 绝地武士改变了Redis的语义?,java,nosql,redis,jedis,Java,Nosql,Redis,Jedis,因此,Redis将zrange(以及相关的排序集命令)指定为一组有序的结果(可能是一个没有重复项的列表?) 那么,为什么绝地(官方和推荐的REDIS客户端)上的zrange(和相关API)会返回一套呢???根据定义,它没有排序的概念 这直接违反了redis操作的语义 这是zrange绝地2.0.0的实现: 公共集zrange(最终字节[]键,最终整数开始,最终整数结束){ checkIsInMulti(); client.zrange(key、start、end); 最终列表成员=client

因此,Redis将zrange(以及相关的排序集命令)指定为一组有序的结果(可能是一个没有重复项的列表?)

那么,为什么绝地(官方和推荐的REDIS客户端)上的zrange(和相关API)会返回一套呢???根据定义,它没有排序的概念

这直接违反了redis操作的语义

这是zrange绝地2.0.0的实现:


公共集zrange(最终字节[]键,最终整数开始,最终整数结束){
checkIsInMulti();
client.zrange(key、start、end);
最终列表成员=client.getBinaryMultiBulkReply();
返回新的LinkedHashSet(成员);
} 

绝地贡献者,你打算修复它吗?

LinkedHashSet是一个有序集。可能应该更改API以明确反映这一点,或者只返回一个列表


与此相反,此对话更适合邮件列表。

在2.2.0版中,它将返回SorteSet,根据

这可能更适合作为Redis项目上的错误?我不确定我们能做些什么。起初我认为这是另一个SW:TOR插件问题。当然,罗布,但我也想引发一些讨论和思考与绝地武士有关的人,或计划使用绝地武士的人,因为这不是一个bug,这是一个非常严重的概念问题。(我之前的评论中的s/Redis/Jedis)@戴维斯塔法迪拉-我确实和你一样担心。然而,SO的问答形式不适合讨论;相反,它更适合回答具体的问题。此时,您唯一的问题是询问是否有人计划修复它,这是一个相当开放的问题。询问是否有办法解决此问题或保证排序可能更合适?没错,但方法签名应该指定
LinkedHashSet
作为其返回a)的返回类型,表明它正在返回一个排序集,(B)这样客户就不必为了保证订购而将其铸造或转换成某种东西。这正是我的观点。如果我需要看一下绝地武士的基本实现来理解绝地武士的语义,绝地武士并没有经过很好的思考,其可靠性值得怀疑@Eric,因为它返回一个集合,所以不能保证排序。@DavidCostaFaidella-我们在同一页上;我只是重申你对w.r.t.Eric回答的问题的关注:)-你提到你提出了一个问题;这将是一个潜在的解决方案。我很早就进入了。请看我其余的回复。事实上,redis的文档上写着“多批量回复:指定范围内的元素列表(可选带有它们的分数)。”
  public Set<byte[]> zrange(final byte[] key, final int start, final int end) {
        checkIsInMulti();
        client.zrange(key, start, end);
        final List<byte[]> members = client.getBinaryMultiBulkReply();
        return new LinkedHashSet<byte[]>(members);
    }