0
0
RedisHow-ToBeginner · 3 min read

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 ZADD without updating scores properly, which can cause outdated rankings.
  • Not using ZREVRANGE for 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

CommandDescription
ZADD key score memberAdd or update a member's score in the sorted set
ZREVRANGE key start stop WITHSCORESGet members ordered from highest to lowest score
ZREM key memberRemove a member from the sorted set
ZCARD keyGet the number of members in the leaderboard
ZSCORE key memberGet 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.