Bạn có biết? Vào lúc 3 giờ sáng, hệ thống e-commerce của một công ty lớn bất ngờ sập hoàn toàn. Nguyên nhân? Redis instance chạy trong production đã chiếm hết bộ nhớ RAM, khiến hàng triệu request bị timeout. Khách hàng không thể đặt hàng, đội DevOps nhận hàng trăm alert, và mất hơn 4 giờ để khôi phục. Tất cả chỉ vì thiếu một cấu hình maxmemory đơn giản.
Đây không phải là câu chuyện hư cấu — nó xảy ra thường xuyên hơn bạn nghĩ. Trong bài viết cuối cùng của series Redis, chúng ta sẽ cùng nhau khám phá tất cả những gì cần biết để chạy Redis an toàn, ổn định và hiệu quả trong môi trường production.
1. Memory Management — Quản lý bộ nhớ
Bộ nhớ là tài nguyên quý giá nhất của Redis. Vì Redis lưu trữ dữ liệu trong RAM, việc quản lý bộ nhớ không đúng cách sẽ dẫn đến hệ thống crash hoặc bị OOM Killer (Out of Memory Killer) của Linux tiêu diệt.
1.1. Cấu hình maxmemory
Đây là bước đầu tiên và quan trọng nhất khi deploy Redis lên production. Bạn phải đặt giới hạn bộ nhớ tối đa mà Redis được phép sử dụng:
# redis.conf
maxmemory 2gb
# Hoặc đặt theo tỷ lệ phần trăm RAM hệ thống
# maxmemory 75%
Nếu không đặt maxmemory, Redis sẽ sử dụng toàn bộ RAM có sẵn cho đến khi hệ điều hành giết process. Hậu quả là mất toàn bộ dữ liệu trong cache.
1.2. Eviction Policies — Chính sách loại bỏ dữ liệu
Khi bộ nhớ đạt giới hạn, Redis cần biết nên loại bỏ key nào. Đây là lúc eviction policy phát huy vai trò:
| Chính sách | Cơ chế | Phù hợptrường hợp | Ưu điểm | Nhược điểm |
|---|---|---|---|---|
| noeviction | Trả lỗi khi hết bộ nhớ | Dữ liệu quan trọng, không đượcmất | Khôngmất dữ liệu | Service bị gián đoạn |
| allkeys-lru | Loại bỏ key ít được dùng nhất (toàn bộ keyspace) | Cache chung, session store | Hiệu quả cao, giữ lại hot data | Có thểmất dữ liệu quan trọng |
| volatile-lru | Loại bỏ key ít dùng nhất (chỉ key có TTL) | hỗn hợp data (cache + persistent) | Bảo vệ key vĩnh viễn | Cần đặt TTL cho cache keys |
| allkeys-random |
0 bình luận
Đang tải bình luận...
Để lại bình luận