3

因此,Redis 将 zrange(和相关的排序集命令)指定为 ORDERED 的结果集(可能是没有重复的列表?)。

为什么 Jedis(官方和推荐的 REDIS 客户端)上的 zrange(和相关 API)返回一个 Set?根据定义,哪个没有排序的概念?

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

这是 zrange jedis 2.0.0 的实现:


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

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

4

2 回答 2

1

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

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

于 2011-12-20T16:20:34.263 回答
1

根据https://github.com/xetorthio/jedis/issues/244,在 2.2.0 版本中,它将返回 SorteSet

于 2011-12-27T19:29:28.917 回答