How to Implement Leaderboard Using Redis: Simple Guide
Use Redis
ZADD to add or update user scores in a sorted set and ZREVRANGE to retrieve the top users sorted by score. Sorted sets keep scores ordered, making Redis ideal for leaderboards.Syntax
Redis uses sorted sets to implement leaderboards. The main commands are:
ZADD key score member: Adds or updates a member with a score.ZREVRANGE key start stop WITHSCORES: Retrieves members ordered from highest to lowest score.ZREM key member: Removes a member from the leaderboard.
redis
ZADD leaderboard 1500 user123 ZREVRANGE leaderboard 0 9 WITHSCORES ZREM leaderboard user123
Example
This example shows how to add users with scores, get the top 3 users, and remove a user from the leaderboard.
redis
127.0.0.1:6379> ZADD leaderboard 3000 alice (integer) 1 127.0.0.1:6379> ZADD leaderboard 4500 bob (integer) 1 127.0.0.1:6379> ZADD leaderboard 2000 charlie (integer) 1 127.0.0.1:6379> ZREVRANGE leaderboard 0 2 WITHSCORES 1) "bob" 2) "4500" 3) "alice" 4) "3000" 5) "charlie" 6) "2000" 127.0.0.1:6379> ZREM leaderboard charlie (integer) 1 127.0.0.1:6379> ZREVRANGE leaderboard 0 2 WITHSCORES 1) "bob" 2) "4500" 3) "alice" 4) "3000"
Output
1) "bob"
2) "4500"
3) "alice"
4) "3000"
5) "charlie"
6) "2000"
(integer) 1
1) "bob"
2) "4500"
3) "alice"
4) "3000"
Common Pitfalls
Common mistakes when implementing leaderboards with Redis include:
- Using
ZADDwithout updating scores properly, which can cause outdated rankings. - Not using
ZREVRANGEfor descending order, resulting in reversed leaderboard order. - Ignoring score ties, which Redis handles by lexicographical order of members.
- Not removing inactive users, which can clutter the leaderboard.
redis
Wrong: ZRANGE leaderboard 0 9 WITHSCORES # returns lowest scores first Right: ZREVRANGE leaderboard 0 9 WITHSCORES # returns highest scores first
Quick Reference
| Command | Description |
|---|---|
| ZADD key score member | Add or update a member's score in the sorted set |
| ZREVRANGE key start stop WITHSCORES | Get members ordered from highest to lowest score |
| ZREM key member | Remove a member from the sorted set |
| ZCARD key | Get the number of members in the leaderboard |
| ZSCORE key member | Get the score of a specific member |
Key Takeaways
Use Redis sorted sets with ZADD to store and update user scores efficiently.
Retrieve top users with ZREVRANGE for descending order leaderboard display.
Always remove inactive users to keep the leaderboard clean and relevant.
Beware of using ZRANGE which sorts ascending; use ZREVRANGE for leaderboards.
Redis handles score ties by sorting members lexicographically.