Lập trình Go 22/09/2026 12 phút

Distributed lock với Redis trong Go: SET NX PX và Lua unlock an toàn

Mutex chỉ khóa trong một tiến trình. Khi nhiều máy chủ tranh một tài nguyên, cần khóa ngoài tiến trình. Bài dựng distributed lock bằng Redis trong Go: SET NX PX để lấy, Lua so sánh-rồi-xóa để trả an toàn. Đo thật: loại trừ đúng 1 người, 50 goroutine đỉnh critical section = 1, và những cái bẫy.

Lập trình Go 22/09/2026 10 phút

go-redis pipeline: gộp nhiều lệnh Redis vào một round-trip

Gửi N lệnh Redis tuần tự là N vòng đi-về mạng — với remote Redis, gần như toàn bộ thời gian là chờ mạng chứ không phải chờ Redis. Pipeline xếp N lệnh rồi gửi hết, đọc hết trong một round-trip. Đo thật trong Go: 1000 lệnh SET tuần tự mất 1.431s, pipeline chỉ 10ms — nhanh 140 lần.

Kiến trúc hệ thống 22/09/2026 6 phút

Consistent hashing: cách Amazon Dynamo chia dữ liệu, dựng THẬT trên Redis Cluster

Chia khoá cho N node bằng hash%N nghe hợp lý — cho tới khi thêm một node và gần như MỌI khoá phải chuyển chỗ. Dynamo (2007) giải bằng consistent hashing. Bài này dựng THẬT một Redis Cluster 3 node (16384 hash slot), nạp 20.000 khoá, thêm node thứ 4 và đo trực tiếp: chỉ 24,9% khoá phải dời (~1/N) thay vì ~75% của modulo.

Kiến trúc hệ thống 22/09/2026 6 phút

Uber tìm tài xế gần bạn thế nào: geospatial index chạy THẬT trên Redis GEO

Ghép khách với tài xế không thể so khoảng cách tới cả triệu tài xế mỗi lần. Bài này dựng THẬT một chỉ mục không gian trên Redis GEO (dùng geohash), nạp 500.000 tài xế và đo trực tiếp: GEOSEARCH trả lân cận đã sắp theo khoảng cách, 13.368 truy vấn/giây p50 3,6ms, index 42MB. Và vì sao Uber tự xây H3 lục giác.

Kiến trúc hệ thống 22/09/2026 6 phút

Dựng feed như Twitter/X trên Redis THẬT: fanout ghi vs đọc và bài toán người nổi tiếng

Timeline phải trả về tức thì dù bạn theo dõi hàng nghìn người. Bài này dựng feed THẬT trên Redis: push bằng LPUSH, đọc bằng LRANGE. Đo trực tiếp: một tweet của sao 50 triệu follower = 50 triệu LPUSH ~ 138 giây fanout cho MỘT tweet. Và cách hybrid push-người-thường / pull-người-nổi-tiếng cứu hệ thống.

Kiến trúc hệ thống 22/09/2026 8 phút

Cloudflare giới hạn tần suất ở biên: dựng sliding window counter THẬT trên Redis

Rate limit ở biên phải chạy cho hàng triệu danh tính mà vừa chính xác vừa cực rẻ RAM. Fixed window cho lọt gấp đôi ở ranh giới; log chính xác ngốn RAM. Bài này dựng sliding window counter kiểu Cloudflare chạy THẬT trên Redis bằng script Lua nguyên tử — đo trực tiếp: fixed cho lọt 200, sliding chặn ở 102; và MEMORY USAGE thật 96 byte vs hơn 1 MB.