Amazon ElastiCache
Bộ nhớ đệm (Redis)
Redis/Valkey/Memcached được quản lý, lưu dữ liệu trong RAM để đọc nhanh hơn database nhiều lần.
- Chi phí$$ Vừa phải
- Độ khó●●●●●
- Để không có tốn tiền?Có
- AWS quản lý
- Có trong đềSAA · DVA · SOA
Hình dungNhư tờ giấy nhớ dán trên bàn: thông tin hay dùng để sẵn, khỏi mở tủ.
ElastiCache đứng ở đâu trong hệ thống?
Gọi tới ElastiCache
Một ví dụ thật, từng bước
- Trang chủ một báo điện tử gọi database 50 lần cho mỗi lượt xem, giờ cao điểm database quá tải.
- Bạn tạo cụm ElastiCache for Valkey (tương thích Redis) có bản sao ở AZ khác.
- Ứng dụng đọc cache trước; không có thì mới hỏi database, rồi lưu kết quả vào cache trong 60 giây.
- Phần lớn request giờ được trả từ bộ nhớ trong vòng chưa tới một mili giây, database nhẹ hẳn.
- Phiên đăng nhập cũng chuyển vào ElastiCache, nên máy web nào hỏng thì người dùng vẫn không bị đăng xuất.
Khi nào nên dùng
✓ Nên dùng khi
Cache truy vấn DB, lưu session, bảng xếp hạng.
✗ Không nên dùng khi
Dữ liệu chính cần độ bền tuyệt đối → database.
Ví dụ hay gặp
- Cache truy vấn để giảm tải RDS
- Lưu session web
- Leaderboard, giới hạn tốc độ (rate limit), pub/sub thời gian thực
ElastiCache, DynamoDB hay RDS?
| Vai trò | Cache, lưu session | Database chính (NoSQL) | Database chính (SQL) |
|---|---|---|---|
| Tốc độ | Dưới 1 mili giây (trong bộ nhớ) | Vài mili giây | Tuỳ truy vấn |
| Độ bền | Không thay database; có sao chép, sao lưu | Bền, nhiều AZ | Bền, có sao lưu |
| Tính tiền | Theo node theo giờ hoặc serverless | Theo request hoặc công suất | Theo giờ máy + ổ |
Tốn bao nhiêu tiền?
- Cách tính: Theo giờ node (ví dụ cache.t4g.micro ~$0,016/giờ) hoặc ElastiCache Serverless theo GB dữ liệu và đơn vị xử lý (ECPU).
- Miễn phí: Tài khoản cũ: 750 giờ cache.t*.micro trong 12 tháng.
Serverless có mức dữ liệu tối thiểu tính phí; cluster quá lớn so với nhu cầu; truyền dữ liệu chéo AZ giữa app và cache.
Đề muốn “giảm tải đọc cho database” hoặc “không mất session khi web server hỏng” → ElastiCache. Cần sao chép, failover, kiểu dữ liệu phong phú → Redis/Valkey; chỉ cache đơn giản, đa luồng → Memcached. Cache cho riêng DynamoDB → DAX.
Thử sức với câu hỏi thi thật
1A company runs a web application on Amazon EC2 instances in an Auto Scaling group behind an Application Load Balancer that has sticky sessions enabled. The web server currently hosts the user session state. The company wants to ensure high availability and avoid user session state loss in the event of a web server outage. Which solution will meet these requirements?
- AUse an Amazon ElastiCache for Memcached instance to store the session data. Update the application to use ElastiCache for Memcached to store the session state.
- BUse Amazon ElastiCache for Redis to store the session state. Update the application to use ElastiCache for Redis to store the session state.
- CUse an AWS Storage Gateway cached volume to store session data. Update the application to use AWS Storage Gateway cached volume to store the session state.
- DUse Amazon RDS to store the session state. Update the application to use Amazon RDS to store the session state.
Xem đáp án
Đáp án đúng: B
Đưa session ra khỏi web server và lưu vào ElastiCache for Redis (có sao chép và tự failover). Một server hỏng thì người dùng vẫn giữ phiên đăng nhập. Memcached không có sao chép nên vẫn có thể mất dữ liệu.
2What does Amazon ElastiCache provide?
- AA service by this name doesn't exist. Perhaps you mean Amazon CloudCache.
- BA virtual server with a huge amount of memory.
- CA managed In-memory cache service.
- DAn Amazon EC2 instance with the Memcached software already pre-installed.
Xem đáp án
Đáp án đúng: C
ElastiCache là dịch vụ cache trong bộ nhớ (Redis, Valkey, Memcached) do AWS quản lý.
Câu hỏi thường gặp
ElastiCache dùng Redis (Valkey) hay Memcached?
Redis OSS và Valkey có kiểu dữ liệu phong phú, sao chép, failover tự động, sao lưu và lưu bền, hợp với hầu hết trường hợp. Memcached đơn giản, đa luồng, chỉ để cache thuần, không có sao chép hay lưu bền.
ElastiCache khác gì DAX?
DAX là cache chỉ dành cho DynamoDB, gần như không phải sửa code. ElastiCache là cache dùng chung cho mọi nguồn dữ liệu (RDS, API, kết quả tính toán) và lưu session, nhưng ứng dụng phải tự viết logic đọc ghi cache.
ElastiCache tính tiền thế nào?
Bản dựa trên node tính theo giờ cho mỗi node, chạy liên tục kể cả khi không có request. ElastiCache Serverless tính theo dung lượng dữ liệu lưu và số đơn vị xử lý (ECPU) dùng thực tế.
Đề thi AWS hay hỏi gì về ElastiCache?
Giảm tải đọc cho database, lưu session để ứng dụng không giữ trạng thái, chọn Redis hay Memcached, chiến lược lazy loading và write-through, và bật Multi-AZ để tự failover.