ZSetOperations 주요 메서드 정리

메서드 설명
add(key, value, score) ZSet에 값을 추가하거나 점수(score)를 업데이트함
add(key, tuples) 여러 개의 value-score 쌍을 추가
incrementScore(key, value, delta) 특정 value의 점수(score)를 delta만큼 증가시킴
score(key, value) 특정 value의 점수를 조회
rank(key, value) value의 순위를 낮은 점수 기준(오름차순)으로 조회
reverseRank(key, value) value의 순위를 높은 점수 기준(내림차순)으로 조회
range(key, start, end) 지정된 범위의 요소들을 낮은 점수 순으로 조회
reverseRange(key, start, end) 지정된 범위의 요소들을 높은 점수 순으로 조회
rangeWithScores(key, start, end) 낮은 점수 기준 범위 + 점수 함께 조회
reverseRangeWithScores(key, start, end) 높은 점수 기준 범위 + 점수 함께 조회
rangeByScore(key, min, max) 점수 범위(min~max)에 해당하는 값 조회
remove(key, vararg values) 특정 값 삭제
removeRange(key, start, end) 순위 범위로 삭제
removeRangeByScore(key, min, max) 점수 범위로 삭제
count(key, min, max) 점수 범위에 해당하는 요소 수
size(key) 또는 zCard(key) ZSet의 전체 요소 개수

사용 예제

val zSetOps = redisTemplate.opsForZSet()

// 1. add
zSetOps.add("ranking", "user1", 100.0)

// 2. incrementScore
zSetOps.incrementScore("ranking", "user1", 50.0) // 점수 +50 → 150.0

// 3. score 조회
val score = zSetOps.score("ranking", "user1") // 150.0

// 4. 순위 조회 (reverseRank = 높은 점수 순)
val rank = zSetOps.reverseRank("ranking", "user1") // 예: 0

// 5. top 3 조회
val topUsers = zSetOps.reverseRangeWithScores("ranking", 0, 2)
topUsers?.forEach {
    println("user: ${it.value}, score: ${it.score}")
}

// 6. 삭제
zSetOps.remove("ranking", "user1")