Redis: cache và hàng đợi
Cài đặt Redis trên VDS, mật khẩu và ràng buộc vào địa chỉ cục bộ, giới hạn bộ nhớ và chính sách loại bỏ, cùng sự khác biệt giữa cache và hàng đợi.
Cập nhật 23 tháng 8, 2026
Redis lưu dữ liệu trong bộ nhớ, đó là lý do nó được dùng để cache, session, bộ đếm và hàng đợi tác vụ. Trên VPS, nó hữu ích đúng chừng nào còn vừa bộ nhớ: working set lớn hơn bộ nhớ trống không còn là tăng tốc mà là nguyên nhân gây crash.
Cài đặt
apt update && apt install -y redis-server # Debian, Ubuntu
dnf install -y redis # AlmaLinux, CentOS Stream
systemctl enable --now redis-server
redis-cli ping
Phản hồi PONG nghĩa là máy chủ đang chạy.
Cấu hình bắt buộc
Tệp /etc/redis/redis.conf:
bind 127.0.0.1
protected-mode yes
requirepass long-random-password
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly no
systemctl restart redis-server
redis-cli -a 'password' ping
Các trình quét tìm ra Redis không mật khẩu lộ ra internet trong vài phút và dùng nó để đào coin. Nếu ứng dụng của bạn nằm cùng máy, hãy giữ bind 127.0.0.1 và không mở cổng 6379 ra ngoài. Nếu cần truy cập từ bên ngoài, chỉ dùng SSH tunnel hoặc VPN.
Bộ nhớ và eviction
Đặt maxmemory một cách rõ ràng: nếu không, Redis sẽ phình lên cho đến khi hệ thống bắt đầu kill tiến trình. Cho nó một phần tư bộ nhớ của tier là hợp lý.
| Tier | Bộ nhớ máy | maxmemory |
|---|---|---|
| VDS-1 | 2 GB | 256 MB |
| VDS-2 | 4 GB | 512 MB |
| VDS-3 | 8 GB | 1–2 GB |
| VDS-5 | 24 GB | 4–6 GB |
Chính sách phụ thuộc vào vai trò:
- cache —
allkeys-lru, các key cũ bị loại bỏ âm thầm; - hàng đợi tác vụ —
noeviction, mất một tác vụ là không thể chấp nhận, lỗi ghi vẫn tốt hơn.
Đừng trộn cache và hàng đợi trong cùng một database, chính vì mâu thuẫn này. Hãy tách chúng thành các số database khác nhau (SELECT 1) hoặc hai instance.
Lưu bền xuống đĩa
Mặc định, Redis định kỳ ghi snapshot vào dump.rdb. Với cache thuần túy thì đây là việc ghi đĩa không cần thiết — hãy tắt save. Với hàng đợi, hãy bật appendonly yes: như vậy tác vụ sẽ không bị mất sau khi máy khởi động lại.
Lưu ý rằng tốc độ ghi đĩa bị giới hạn bởi tier: 60 MB/s mỗi lõi, không thấp hơn 60 và không cao hơn 400 MB/s.
Giám sát
redis-cli -a 'password' info memory
redis-cli -a 'password' info stats
redis-cli -a 'password' --stat
redis-cli -a 'password' slowlog get 10
Chỉ số quan trọng là evicted_keys: tăng liên tục nghĩa là không đủ bộ nhớ và cache không mang lại hiệu quả.
Lỗi thường gặp
| Triệu chứng | Nguyên nhân |
|---|---|
NOAUTH Authentication required | Ứng dụng chưa được cấp mật khẩu |
OOM command not allowed | Đã đạt maxmemory với chính sách noeviction |
DENIED Redis is running in protected mode | Truy cập từ bên ngoài với bind 127.0.0.1 — đây là thiết kế cố ý |
| Dữ liệu biến mất sau khi khởi động lại | Chưa bật lưu bền |
| Máy bắt đầu swap | Tổng maxmemory và các dịch vụ khác vượt quá bộ nhớ của tier |
Đừng dùng
KEYS *trên máy chủ production: lệnh này chặn Redis trong khi nó duyệt qua toàn bộ key. Hãy dùngSCANđể duyệt.