ZSET
s используются для хранения отсортированных наборов в Redis. Я использую spring-data-redis
для ZSetOperations.
Все методы диапазона возвращают Set<>
вместо SortedSet<>
, и мне было интересно, в чем причина этого?
См .: https://github.com/spring-projects/spring-data-redis/blob/master/src/main/java/org/springframework/data/redis/core/ZSetOperations.java#L207
Кроме того, поскольку они не возвращают отсортированные наборы, не все операции диапазона reverse становятся избыточными, поскольку порядок все равно не поддерживается, и мы не можем просто получить какой-либо элемент вindex?
Я мог упустить что-то очень очевидное, извините, пожалуйста, мою наивность в этом вопросе.
Мой пример использования:
Я сохраняю значения с датами какГол. Я хочу получить все значения между двумя датами, проверить количество и использовать самую последнюю дату.
Я планировал сделать что-то вроде:
// 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.
Но тип возврата rangeByScore
- это Set
, поэтому никаких операций get.
Я должен получить диапазон с оценкой, а затем сам их отсортировать.
Или мне придется преобразовать в массив и получить элемент.
Или сделать что-то вроде values.iterator().next()