为什么 spring-data-redis ZSetOperations 范围操作返回 Set 而不是 SortedSet?

Sau*_*ava 5 java spring redis spring-data-redis zset

ZSETs 用于在 redis 中存储排序集。我用于spring-data-redisZSetOperations。

所有范围方法都返回Set<>而不是SortedSet<>,我想知道其背后的原因是什么?

请参阅: https: //github.com/spring-projects/spring-data-redis/blob/master/src/main/java/org/springframework/data/redis/core/ZSetOperations.java#L207

另外,由于这些不返回排序集,所有反向范围操作是否都会变得多余,因为无论如何都不会维护顺序,并且我们不能只获取索引处的任何元素?

我可能会遗漏一些非常明显的东西,请原谅我在这件事上的天真。


我的用例:

我正在存储带有日期的值作为分数。我想获取两个日期之间的所有值,检查计数并使用最近的日期。

我本来打算做类似的事情:

// get reverse sorted values, with most recent date being on top 
SrotedSet<String> values = zSetOperations.rangeByScore(key, this.getBeginDate(), this.getEndDate());
// check values size and do values.get(0) i.e. the most recent date.
Run Code Online (Sandbox Code Playgroud)

但返回类型rangeByScoreSet,因此没有“get”操作。

  • 我必须获得分数范围,然后自己对它们进行排序。

  • 或者我必须转换为数组并获取元素。

  • 或者做类似的事情values.iterator().next()