Case study kỹ thuật

Bảng xếp hạng Redis Sorted Set

Truy xuất thứ hạng nhanh, ghi điểm atomic và có khả năng rebuild từ nguồn dữ liệu bền vững.

Redis ZSETLuaHyperLogLogMySQLO(log n)

01 · Bối cảnh

Cuộc thi cần xếp hạng cá nhân và tập thể theo điểm cùng thời gian nộp. Sort trực tiếp trên MySQL ở luồng nóng có thể trở thành nút thắt khi traffic tăng.

02 · Bài toán

Cần truy xuất hạng nhanh, xử lý tie-break theo thời gian, ghi đồng bộ dữ liệu ranking và có đường khôi phục khi Redis miss hoặc lệch dữ liệu.

03 · Kiến trúc

Luồng xử lý

01 Kết quả bài thi
02 Lua atomic write
03 ZSET + Hash
04 Ranking API
05 MySQL rebuild

04 · Kết quả

Giải pháp đang chạy production với truy xuất thứ hạng O(log n), giảm phụ thuộc vào các thao tác sort nặng trên MySQL cho luồng ranking.

05 · Phạm vi sở hữu

Trực tiếp triển khai và vận hành phiên bản ranking Redis đang chạy production.

06 · Trade-off

HyperLogLog chỉ cho số lượng ước lượng. Redis score dùng kiểu double nên cần kiểm soát precision khi encode tie-break. MySQL vẫn là nguồn dữ liệu để rebuild khi cần.

Muốn trao đổi sâu hơn?

Tôi có thể trình bày các quyết định kỹ thuật, giới hạn và phương án thay thế trong buổi trao đổi.

Email cho tôi