Redis rất nhanh, nhưng việc truy vấn dữ liệu thường xuyên có thể tạo gánh nặng cho máy chủ API. Đặc biệt với những dữ liệu như dữ liệu thời gian thực, nơi việc cập nhật diễn ra không đều nhưng lại cần được truy vấn thường xuyên, thì cần một chiến lược cache hiệu quả.
-
Vấn đề: Redis PubSub hoặc Keyspace Notification có thể khiến logic phát hiện cập nhật và xử lý thông điệp trở nên phức tạp, hoặc gây lãng phí tài nguyên.
-
Giải pháp: Invalidation Message, được hỗ trợ từ Redis 6.0, là cách máy chủ quản lý cache phía client.
- Sau khi client đọc một key, nếu client khác thay đổi key đó, Redis sẽ gửi thông điệp cập nhật để xóa cache.
-
Triển khai: Trong ngôn ngữ Go, có thể áp dụng Invalidation Message bằng tổ hợp redigo+ristretto hoặc thư viện rueidis.
- redigo+ristretto cần logic tùy biến, trong khi rueidis có thể triển khai đơn giản bằng hàm DoCache.
-
Kết quả: Trong áp dụng thực tế, tốc độ phản hồi API được cải thiện tối đa 82%, đồng thời giảm tải cho máy chủ Redis. Dù vẫn cần quản lý cache phía client, hiệu quả cải thiện hiệu năng là rất lớn.
1 bình luận
👀