Concept Flow - Top-N queries
Start with dataset
Sort data by score or value
Select top N items
Return top N results
End
Top-N queries sort data by a score or value and then pick the top N items to return.
ZADD leaderboard 100 "Alice" 200 "Bob" 150 "Carol" ZREVRANGE leaderboard 0 2 WITHSCORES
| Step | Command | Action | Data State | Output |
|---|---|---|---|---|
| 1 | ZADD leaderboard 100 "Alice" | Add Alice with score 100 | {"leaderboard": {"Alice": 100}} | OK |
| 2 | ZADD leaderboard 200 "Bob" | Add Bob with score 200 | {"leaderboard": {"Alice": 100, "Bob": 200}} | OK |
| 3 | ZADD leaderboard 150 "Carol" | Add Carol with score 150 | {"leaderboard": {"Alice": 100, "Bob": 200, "Carol": 150}} | OK |
| 4 | ZRANGE leaderboard -3 -1 WITHSCORES | Get all 3 members sorted by score ascending | {"leaderboard": {"Alice": 100, "Bob": 200, "Carol": 150}} | ["Alice", "100", "Carol", "150", "Bob", "200"] |
| 5 | ZREVRANGE leaderboard 0 2 WITHSCORES | Get top 3 members sorted by score descending | {"leaderboard": {"Alice": 100, "Bob": 200, "Carol": 150}} | ["Bob", "200", "Carol", "150", "Alice", "100"] |
| 6 | End | Top-N query complete | {"leaderboard": {"Alice": 100, "Bob": 200, "Carol": 150}} | Top 3 players with scores returned |
| Variable | Start | After Step 1 | After Step 2 | After Step 3 | Final |
|---|---|---|---|---|---|
| leaderboard | {} | {"Alice": 100} | {"Alice": 100, "Bob": 200} | {"Alice": 100, "Bob": 200, "Carol": 150} | {"Alice": 100, "Bob": 200, "Carol": 150} |
Top-N queries in Redis use sorted sets. Add members with scores using ZADD. Use ZREVRANGE to get top N by highest scores. ZRANGE returns sorted ascending by score. Top-N queries help find best scoring items quickly.