Kodeloka
  1. Kodeloka
  2. Kelas Redis
  3. Materi

Data Types ยท Modul 9 dari 21

Tipe Data Sorted Set / ZSet & Leaderboard Pattern

Membangun sistem Leaderboard real-time menggunakan Redis Sorted Set (ZSet) dengan pengurutan otomatis berdasarkan Score.

๐Ÿ“Œ Ringkasan Eksekutif Modul:
Sorted Set (ZSet) mirip seperti Set (unik), namun setiap anggotanya diasosiasikan dengan Floating Point Score. Digunakan untuk Leaderboard Game dan Ranking System.

1. Konsep Sorted Set (ZSet)

Sorted Set (ZSet) adalah salah satu tipe data terkuat di Redis. Setiap elemen di dalam ZSet dijamin unik, tetapi diasosiasikan dengan sebuah nilai angka berpresisi tinggi bernama Score. Data secara otomatis diurutkan di dalam memori dari skor terkecil hingga terbesar.

Struktur data internal ZSet menggabungkan SkipList dan Hash Map, yang memungkinkan kueri ranking, pencarian rentang skor (range query), dan penambahan data dalam kompleksitas waktu logarithmic $O(log N)$.

2. Perintah Manipulasi ZSet

redis-cli
# Menambahkan anggota beserta Skor ke ZSet (ZADD key score member)
ZADD leaderboard 1500 "Player_Budi" 2400 "Player_Eko" 1850 "Player_Siti"

# Mengambil peringkat dari skor Terendah ke Tertinggi (Ascending)
ZRANGE leaderboard 0 -1 WITHSCORES

# Mengambil Top Leaderboard dari skor Tertinggi ke Terendah (Descending)
ZREVRANGE leaderboard 0 -1 WITHSCORES

# Mengambil Peringkat (Rank) spesifik pemain (0-indexed)
ZRANK leaderboard "Player_Eko"       # Rank ascending
ZREVRANK leaderboard "Player_Eko"    # Peringkat #1 (0) di Descending leaderboard!

# Mengambil Skor spesifik pemain
ZSCORE leaderboard "Player_Eko"

# Menambahkan nilai skor pemain (Increment)
ZINCRBY leaderboard 500 "Player_Budi"  # Skor Budi bertambah dari 1500 menjadi 2000

# Menghapus anggota dari ZSet
ZREM leaderboard "Player_Siti"
๐ŸŽฎ Skenario Penggunaan Nyata:
Di aplikasi game mobile dengan 10 juta pemain aktif, Redis ZSet dapat menentukan peringkat #1 sampai #10 di seluruh dunia secara real-time tanpa beban query DB SQL heavy ORDER BY score DESC LIMIT 10!