Redis là hệ thống lưu trữ dữ liệu trong bộ nhớ thường được dùng cho cache, session, queue, rate limit hoặc dữ liệu tạm thời cần truy cập rất nhanh. Trên VPS Ubuntu, Redis có thể cài qua APT trong vài phút, nhưng cấu hình mặc định cần được hiểu rõ trước khi đưa vào production. Điểm quan trọng nhất là không mở Redis trực tiếp ra Internet nếu không cần; nên bind localhost hoặc private IP, kết hợp firewall, ACL/password và quyền truy cập tối thiểu. Bài viết này hướng dẫn từ cài Redis, kiểm tra service, test bằng `redis-cli`, cấu hình `bind`, protected mode, ACL, persistence RDB/AOF, giới hạn memory, backup và xử lý các lỗi như connection refused, NOAUTH hoặc OOM.
Redis là một datastore chạy chủ yếu trong memory, rất phổ biến để làm cache, session store, queue, rate limiter hoặc key-value database cho ứng dụng web.
Trên VPS Ubuntu, Redis có thể cài nhanh bằng APT. Tuy nhiên, Redis không nên được xem như một dịch vụ “cài xong là mở port 6379 ra Internet”. Nếu cấu hình sai network và authentication, Redis có thể trở thành điểm yếu nghiêm trọng.
Bài viết này hướng dẫn cách cài Redis theo hướng an toàn: giữ service chỉ ở localhost khi app chạy cùng VPS, dùng ACL/password khi cần, hiểu persistence, giới hạn memory và backup.
1. Redis phù hợp cho những use case nào?
Redis thường được dùng cho:
- cache query hoặc page;
- session đăng nhập;
- queue;
- rate limiting;
- pub/sub;
- distributed lock;
- ephemeral data;
- một số mô hình realtime.
Redis không phải lúc nào cũng thay thế database chính như PostgreSQL/MySQL.
2. Chuẩn bị VPS Ubuntu
Bạn cần:
- Ubuntu Server;
- quyền
sudo; - RAM phù hợp workload;
- firewall;
- ứng dụng cần Redis.
Nếu đang cần VPS Linux để chạy Redis hoặc backend, có thể tham khảo VPS tại HUONG CLOUD.
3. Cập nhật hệ thống
sudo apt update
sudo apt upgrade -y
4. Cài Redis
sudo apt install redis-server -y
Kiểm tra service:
sudo systemctl status redis-server
5. Test Redis bằng redis-cli
redis-cli ping
Nếu hoạt động:
PONG
6. Xem phiên bản Redis
redis-server --version
Hoặc:
redis-cli INFO server
7. File cấu hình Redis
Trên Ubuntu package, file thường nằm ở:
/etc/redis/redis.conf
Backup trước khi sửa:
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
8. Redis mặc định listen ở đâu?
Kiểm tra:
sudo ss -tulnp | grep 6379
Trong cấu hình an toàn cho app cùng VPS, Redis nên chỉ listen localhost.
9. Bind localhost
Trong /etc/redis/redis.conf, cấu hình nên giới hạn như:
bind 127.0.0.1 -::1
Tùy phiên bản Redis, cú pháp có thể khác nhẹ.
Điểm chính: không bind 0.0.0.0 nếu không thật sự cần remote access.
10. Protected mode là gì?
Redis có protected-mode để giảm rủi ro khi service bị expose không đúng cách.
Nên giữ:
protected-mode yes
trừ khi bạn hiểu rõ mô hình network/authentication đang triển khai.
11. Có nên mở port 6379 ra Internet?
Không nếu app chạy cùng VPS.
Trong mô hình:
App → 127.0.0.1:6379
không cần public port.
12. Nếu app chạy ở VPS khác
Tốt hơn nên dùng private network hoặc VPN giữa hai máy.
Nếu buộc phải truy cập qua network:
- bind private IP;
- firewall source IP;
- ACL/password;
- TLS nếu kiến trúc hỗ trợ;
- không mở toàn Internet.
13. Redis ACL là gì?
Redis hiện đại hỗ trợ Access Control List để tạo user và giới hạn quyền theo command/key pattern.
Ví dụ khái niệm:
- user ứng dụng chỉ được đọc/ghi key namespace riêng;
- user admin có quyền quản trị;
- user khác bị vô hiệu.
14. Tạo user Redis bằng ACL
Trong redis-cli có thể dùng ACL SETUSER.
Ví dụ:
ACL SETUSER appuser on >MAT_KHAU_MANH ~app:* +@all
Đây chỉ là ví dụ kỹ thuật. Với production, nên giới hạn command category thay vì +@all nếu có thể.
15. Lưu ACL
Tùy cấu hình Redis, ACL có thể được khai báo trong redis.conf hoặc ACL file riêng.
Hãy kiểm tra tài liệu phiên bản hiện tại để đảm bảo thay đổi tồn tại sau restart.
16. Dùng requirepass có còn cần không?
Redis hỗ trợ cả requirepass và ACL, nhưng ACL linh hoạt hơn.
Với hệ thống mới, nên ưu tiên ACL/user riêng khi ứng dụng hỗ trợ.
17. Test authentication
redis-cli --user appuser --pass MAT_KHAU_MANH ping
Kết quả:
PONG
18. Lỗi NOAUTH
Nếu Redis yêu cầu xác thực mà client chưa login, bạn sẽ gặp lỗi kiểu:
NOAUTH Authentication required
Cần cấu hình credential đúng trong app hoặc redis-cli.
19. Restart Redis sau khi sửa config
Kiểm tra syntax theo cách phù hợp rồi restart:
sudo systemctl restart redis-server
Kiểm tra:
sudo systemctl status redis-server
20. Persistence RDB
Redis có thể lưu snapshot RDB định kỳ.
RDB phù hợp khi cần backup dạng snapshot theo thời điểm.
Nhược điểm: có thể mất một phần dữ liệu giữa hai lần snapshot nếu server crash.
21. Persistence AOF
Append Only File ghi lại command thay đổi dữ liệu theo thời gian.
AOF thường cung cấp durability tốt hơn RDB trong nhiều cấu hình nhưng tạo thêm I/O và file log.
Redis cho phép dùng RDB, AOF hoặc kết hợp tùy nhu cầu.
22. Redis chỉ dùng làm cache có cần persistence không?
Không nhất thiết.
Nếu dữ liệu Redis hoàn toàn có thể tái tạo từ database chính, persistence có thể giảm hoặc tắt tùy kiến trúc.
Nếu Redis chứa session/queue quan trọng, cần đánh giá durability kỹ hơn.
23. Xem memory usage
redis-cli INFO memory
Hoặc:
redis-cli --stat
Hãy theo dõi used_memory, used_memory_rss và growth theo thời gian.
24. maxmemory
Bạn có thể đặt giới hạn:
maxmemory 1gb
Con số thực tế phụ thuộc RAM VPS và các service khác.
Không nên cho Redis dùng hết toàn bộ RAM máy.
25. maxmemory-policy
Redis hỗ trợ nhiều eviction policy như LRU/LFU/random/noeviction tùy version.
Nếu Redis làm cache, eviction policy là phần rất quan trọng.
Nếu Redis chứa dữ liệu không được phép mất, noeviction có thể phù hợp hơn nhưng app phải xử lý lỗi OOM.
26. Lỗi OOM command not allowed
Thường xảy ra khi Redis đạt maxmemory với policy không cho eviction.
Kiểm tra:
redis-cli INFO memory
Sau đó:
- tăng memory hợp lý;
- giảm data;
- chọn eviction policy đúng;
- tăng RAM VPS nếu cần.
27. Monitor command có nên dùng production không?
MONITOR cho thấy mọi command realtime và có thể tạo overhead lớn.
Chỉ dùng ngắn để debug.
28. Slowlog
Redis có slowlog để theo dõi command chậm.
Xem:
redis-cli SLOWLOG GET 20
Hữu ích khi latency tăng.
29. INFO clients
redis-cli INFO clients
Giúp kiểm tra số client, blocked client và connection.
30. Xem keyspace
redis-cli INFO keyspace
Có thể thấy số key và TTL trung bình theo database logical.
31. Backup Redis
Nếu dùng RDB, file thường nằm trong thư mục data của Redis.
Kiểm tra:
redis-cli CONFIG GET dir
redis-cli CONFIG GET dbfilename
Không nên copy file snapshot trong lúc chưa hiểu persistence state. Có thể dùng BGSAVE trước rồi copy file sau khi hoàn tất.
32. Trigger BGSAVE
redis-cli BGSAVE
Kiểm tra:
redis-cli LASTSAVE
33. Backup AOF
Nếu dùng AOF, cần backup theo đúng layout/version Redis.
Redis mới có thể dùng multi-part AOF directory thay vì một file duy nhất.
Không copy hướng dẫn cũ mà chưa kiểm tra phiên bản.
34. Redis replication
Redis hỗ trợ replica để tăng availability/read scale.
Tuy nhiên, replica không thay thế backup vì lỗi/xóa dữ liệu có thể được replicate theo.
35. Redis Sentinel
Sentinel hỗ trợ monitoring/failover cho Redis replication topology.
Đây là mô hình phức tạp hơn và không cần cho mọi VPS nhỏ.
36. Redis Cluster
Redis Cluster dùng sharding và replication cho hệ thống lớn hơn.
Không nên triển khai chỉ vì có nhiều dữ liệu nếu workload chưa cần distributed architecture.
37. Firewall
Nếu Redis chỉ local, không cần UFW rule 6379.
Nếu private network:
sudo ufw allow from 10.0.0.20 to any port 6379 proto tcp
Không dùng ufw allow 6379/tcp cho toàn Internet nếu không có lý do đặc biệt.
38. Connection refused
Kiểm tra:
sudo systemctl status redis-server
sudo ss -tulnp | grep 6379
Có thể Redis chưa chạy hoặc bind sai IP.
39. App connect được local nhưng không remote
Đây có thể là hành vi đúng nếu Redis bind localhost.
Nếu cần remote, hãy cấu hình private IP + ACL + firewall thay vì mở public tùy tiện.
40. Restart Redis có mất dữ liệu không?
Nếu persistence tắt và dữ liệu chỉ ở memory, restart sẽ mất dữ liệu.
Nếu persistence bật, Redis sẽ load lại theo snapshot/AOF hiện có.
Hãy hiểu durability trước khi restart production.
41. Redis có cần swap không?
Redis hoạt động tốt nhất khi dataset nằm trong RAM.
Nếu hệ thống swap mạnh, latency có thể tăng đáng kể.
Bạn có thể tham khảo bài Tạo Swap trên VPS Ubuntu, nhưng không nên dùng swap như cách “mở rộng RAM Redis”.
42. Tình huống thực tế: Redis làm cache website
Mô hình:
Nginx → App → Redis localhost
↓
PostgreSQL
Redis cache dữ liệu đọc nhiều, còn PostgreSQL vẫn là nguồn dữ liệu chính.
Nếu Redis restart, app có thể tái tạo cache.
43. Tình huống thực tế: Redis làm queue
Nếu Redis giữ job queue quan trọng, cần:
- persistence phù hợp;
- backup;
- retry;
- monitoring;
- memory limit.
Không nên coi queue là “cache có thể mất”.
44. Checklist Redis production cơ bản
- Redis đã cập nhật.
- Không mở public nếu không cần.
- Bind localhost/private IP.
- Protected mode bật.
- ACL/user riêng.
- Firewall đúng nguồn.
- maxmemory phù hợp.
- Persistence được quyết định rõ.
- Backup nếu dữ liệu cần giữ.
- Monitoring memory/latency.
45. FAQ về Redis trên VPS Ubuntu
Redis mặc định dùng port nào?
TCP 6379.
Có nên mở Redis public Internet không?
Không trong hầu hết trường hợp. Nên dùng localhost/private network.
Redis có phải database chính không?
Có thể dùng như datastore, nhưng nhiều hệ thống dùng Redis làm cache/session/queue bên cạnh database chính.
Redis có cần password không nếu chỉ localhost?
Network isolation đã giảm nhiều rủi ro, nhưng ACL vẫn hữu ích cho defense-in-depth và môi trường nhiều app/user.
maxmemory nên đặt bao nhiêu?
Không có con số chung. Phải chừa RAM cho OS và các service khác.
Redis restart có mất dữ liệu không?
Phụ thuộc persistence RDB/AOF.
Kết luận
Cài Redis trên VPS Ubuntu rất nhanh, nhưng để dùng an toàn cần chú ý network và memory. Trong hầu hết mô hình app cùng VPS, hãy giữ Redis ở localhost thay vì public port 6379.
Dùng ACL/user riêng, cấu hình maxmemory theo RAM thật và quyết định rõ Redis chỉ là cache hay chứa dữ liệu cần durability. Khi Redis là thành phần quan trọng, backup và monitoring là bắt buộc.
Nếu bạn cần VPS Ubuntu tại HUONG CLOUD để chạy Redis, backend hoặc cache 24/7, hãy ưu tiên RAM và storage ổn định theo workload thay vì chỉ nhìn CPU.
Nguồn tham khảo
- Redis Docs – Install Redis on Linux: https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-on-linux/
- Redis Docs – Security: https://redis.io/docs/latest/operate/oss_and_stack/management/security/
- Redis Docs – ACL: https://redis.io/docs/latest/operate/oss_and_stack/management/security/acl/
- Redis Docs – Persistence: https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/
Kết luận
Nếu chưa chắc cấu hình hoặc loại dịch vụ nào phù hợp, hãy gửi nhu cầu thực tế để đội ngũ hỗ trợ tư vấn trước khi mua.
Chưa biết nên chọn gói nào?
Xem bảng giá VPS hoặc liên hệ đội ngũ hỗ trợ để chọn cấu hình phù hợp.
Xem bảng giá VPS →