Leaderboards
• Effective way to show where a user stands within a gamified system
• Absolute leaderboards – incentivize • Relative leaderboards – avoid disengagement of players at
lower end of rankings• Several type of rankings (weekly, monthly, friends, …)
2
3
4
5
Requirements
• Add member• Remove member• Update member score• Find member score• Find member rank• Associate data to members (Name, Alliance, etc…)• Get slices of the ranking (for pagination)
6
Architecture
Scalable to serve several million active users Performance is a must
7
Implementation
• Redis data structure server• Sorted set data structure• Different sorted sets for different kinds of rankings• Redis hash data structure for member associated data• Lua scripting for aggregating in-memory data • (Sorted) Sets operations (union, intersection, etc…)
8
Challenges
• Horizontal scaling• It is not possible to shard a dataset with a single huge key like a
very big sorted set• Two-phase commits if you want to execute a transaction among
different data stores
9
Summary
• Redis is the right tool for the job, but datasets can not be bigger than memory
• Exceptional performance (more than 8K leaderboard ops per second in a single instance)
• Easy to use and understand technology• Mature and open source
10
Top Related