Ausgabe
Ich habe eine Frage, weil es etwas gibt, das im Betrieb von Spring Data Redis nicht gut funktioniert.
Bei der Verwendung von redis-cli gab es kein Problem mit der Abfrage, aber wenn ich die API von spring data redis verwende
- reverseRangeByScore
- https://docs.spring.io/spring-data/redis/docs/current/api/org/springframework/data/redis/core/ZSetOperations.html#reverseRangeByScore-K-double-double-
Es konnten keine Ergebnisse abgerufen werden, daher frage ich, ob es einen anderen Weg gibt oder ob ich einen Fehler gemacht habe.
wenn redis-cli
$zrevrangebyscore redis_key +inf (1664142666 withscores
1) "189:Z0000539"
2) "1664432446"
3) "192:Z0000288"
4) "1664332797"
5) "178:0000cq4e"
6) "1664256182"
In Spring data redis
private val stringRedisTemplate: StringRedisTemplate
val now = Instant.now().epochSecond - (86400 * 7L);
val res = stringRedisTemplate.opsForZSet().reverseRangeByScore(
"redis_key",
0.0,
now.toDouble()
)
res //<- empty
Ich würde mich freuen, wenn Sie mir Ihre Meinung mitteilen könnten.
Lösung
Sie ersetzen +inf
in redis-cli durch 0.0
in spring-data-redis, was kein logischer Ersatz zu sein scheint.
Probieren Sie Double.POSITIVE_INFINITY
statt 0.0
.
Beantwortet von – sazzad
Antwort geprüft von – Terry (FixError Volunteer)