Skip to main content

Command Palette

Search for a command to run...

Lộ trình học Redis

Updated
19 min readView as Markdown

Tuần 1: Nền tảng Redis

Ngày 1

Sáng: Giới thiệu về Redis: lịch sử, ưu điểm, so sánh với các cơ sở dữ liệu khác, kiến trúc cơ bản, các trường hợp sử dụng phổ biến. Lịch sử license: BSD (trước 3/2024) → SSPLv1/RSALv2 (source-available, không phải open source, từ 3/2024) → AGPLv3 được thêm lại từ Redis 8.0 (5/2025). Hiện Redis là tri-license (AGPLv3/SSPLv1/RSALv2), người dùng chọn 1 trong 3 tuỳ mục đích. Giới thiệu Valkey - fork BSD-3-Clause do Linux Foundation quản lý, ra đời sau khi Redis đổi license, được AWS ElastiCache và Google Cloud Memorystore dùng làm mặc định cho cụm mới; Valkey và Redis 8 hiện phát triển độc lập, có sự khác biệt về hiệu năng và tính năng.

Chiều: Cài đặt môi trường Redis (hoặc Valkey - API/CLI tương thích 100%): trên Linux, macOS, Windows. Làm quen với Redis CLI.

Bài tập:

  1. Cài đặt Redis 8.x (hoặc Valkey) trên máy tính cá nhân.

  2. Thực hiện các lệnh cơ bản như PING, ECHO, SET, GET.

  3. Tìm hiểu thông tin về Redis server bằng lệnh INFO.

  4. Lập bảng so sánh Redis 8 (AGPLv3) vs Valkey (BSD-3) theo 4 tiêu chí: license, hiệu năng, tính năng AI/vector, hỗ trợ từ cloud provider - và tự quyết định bạn sẽ thực hành trên nền nào cho phần còn lại của syllabus.

Ngày 2

Sáng: Các kiểu dữ liệu cơ bản trong Redis: String, Hash, List, Set, Sorted Set.

Chiều: Các lệnh thao tác với từng kiểu dữ liệu (SET, GET, HSET, HGET, LPUSH, RPUSH, SADD, SMEMBERS, ZADD, ZRANGE...). Giới thiệu hash field TTL (HEXPIRE, HPERSIST, HGETEX, HSETEX - Redis 7.4/8): cho phép đặt TTL riêng cho từng field trong một Hash, thay vì phải tách key riêng chỉ để expire một phần dữ liệu.

Bài tập:

  1. Sử dụng Redis để lưu trữ thông tin người dùng bằng Hash, trong đó field otp_code có TTL 5 phút bằng HEXPIRE còn các field khác (username, avatar) không hết hạn.

  2. Xây dựng một bảng xếp hạng đơn giản sử dụng Sorted Set.

  3. Tạo một hàng đợi công việc sử dụng List.

Ngày 3

Sáng: Keys trong Redis: các lệnh quản lý key (KEYS, EXISTS, DEL, EXPIRE, TTL...). Giới thiệu ACL v2: phân quyền theo user, theo command, theo key-pattern - thay cho AUTH đơn giản (mật khẩu chung).

Chiều: Redis Configuration: các tham số cấu hình quan trọng, tối ưu hóa hiệu suất Redis.

Bài tập:

  1. Thực hiện các thao tác tìm kiếm, xóa, đặt thời gian sống cho key.

  2. Tìm hiểu và điều chỉnh các tham số maxmemory, maxclients.

  3. Cấu hình Redis để lưu trữ dữ liệu trên đĩa (AOF, RDB).

  4. Tạo 2 user ACL: một chỉ có quyền đọc trên pattern cache:*, một có toàn quyền trên queue:*. Thử truy cập sai quyền để thấy lỗi NOPERM.

Ngày 4

Sáng: Redis Transactions: MULTI, EXEC, WATCH, UNWATCH. Xử lý lỗi trong transaction.

Chiều: Redis Pipelining: tăng tốc độ xử lý lệnh, giảm độ trễ mạng.

Bài tập:

  1. Thực hiện một giao dịch chuyển tiền giữa hai tài khoản.

  2. Sử dụng pipelining để tăng tốc độ SET 1000 giá trị.

  3. Tìm hiểu về optimistic locking trong Redis.

  4. Đo benchmark thực tế bằng redis-benchmark (hoặc valkey-benchmark) để so sánh tốc độ SET 10.000 giá trị: không pipeline vs có pipeline vs Lua/Function script.

Ngày 5

Sáng: Pub/Sub: xây dựng ứng dụng realtime.

Chiều: Redis Functions (FUNCTION LOAD, FCALL) - cách hiện tại được khuyến nghị để đóng gói logic phía server, có versioning và quản lý thư viện tốt hơn so với gọi EVAL rời rạc. Functions viết bằng Lua (một số phiên bản mới hỗ trợ thêm WASM). Vẫn học cú pháp Lua cơ bản, nhưng đặt trong khung Functions.

Bài tập:

  1. Xây dựng một ứng dụng chat đơn giản sử dụng Pub/Sub.

  2. Viết một Redis Function tính số Fibonacci, đăng ký bằng FUNCTION LOAD, gọi bằng FCALL.

  3. So sánh EVAL/EVALSHA (cách cũ) với FCALL (cách hiện tại) - khi nào vẫn nên dùng EVAL.

  4. Đọc về các CVE gần đây liên quan đến Lua scripting trong Redis (một số có thể dẫn tới thực thi mã từ xa nếu không kiểm soát ai được phép chạy script) - để hiểu vì sao cần giới hạn quyền EVAL/FUNCTION bằng ACL.

Tuần 2: Vận hành & Mở rộng

Ngày 6

Sáng: Redis Replication: cấu hình master-slave, failover.

Chiều: Redis Sentinel: giám sát và tự động failover.

Bài tập:

  1. Cài đặt một hệ thống Redis master-slave.

  2. Cấu hình Redis Sentinel để giám sát master.

  3. Gây lỗi master và kiểm tra quá trình failover.

Ngày 7

Sáng: Redis Cluster: scaling Redis, sharding dữ liệu.

Chiều: Redis Persistence: AOF, RDB, ưu nhược điểm, cấu hình.

Bài tập:

  1. Cài đặt một Redis Cluster 3 node.

  2. Thực hiện các thao tác đọc ghi trên cluster.

  3. Tìm hiểu về resharding và node failover trong cluster.

  4. Nếu thực hành trên Valkey: lưu ý file RDB của Redis 7.4+ không tương thích ngược với Valkey (định dạng đã phân nhánh sau điểm fork 7.2.4). Thử migrate dữ liệu giữa Redis 8 và Valkey bằng replication/logical dump (không copy file RDB trực tiếp) và giải thích vì sao cách này an toàn hơn.

Ngày 8

Sáng: Redis Security: Authentication, ACL chi tiết, firewall, mã hóa dữ liệu, TLS/mTLS giữa client-server và giữa các node cluster/replica.

Chiều: Các cấu trúc dữ liệu/tính năng mở rộng của Redis 8 - nay tích hợp sẵn vào core (không cần cài Redis Stack riêng như trước): tìm kiếm toàn văn bản (RediSearch), lưu trữ JSON native (lệnh JSON.*), Time Series, và các cấu trúc xác suất (RedisBloom). Nếu dùng Valkey: các tính năng tương đương (ví dụ tìm kiếm vector) nằm ở module cộng đồng riêng như valkey-search, cần cài thêm.

Bài tập:

  1. Cấu hình Redis để yêu cầu mật khẩu đăng nhập và bật ACL cho user cụ thể.

  2. Sử dụng RediSearch (đã tích hợp sẵn) để tìm kiếm toàn văn bản.

  3. Lưu trữ và truy vấn dữ liệu JSON trực tiếp bằng lệnh JSON.* trong Redis.

  4. So sánh trải nghiệm cài đặt: Redis 8 (built-in) vs Valkey (valkey-search module rời).

Ngày 9

Sáng: Redis Clients: sử dụng Redis với Python (redis-py), Golang (redigo hoặc go-redis), Rust (redis-rs).

Chiều: Redis Caching Strategies: cache aside, write-through, write-back.

Bài tập:

  1. Kết nối đến Redis từ Python, Golang, Rust.

  2. Thực hiện các thao tác cơ bản với Redis từ các ngôn ngữ này.

  3. Xây dựng một ứng dụng web đơn giản sử dụng Redis làm cache.

  4. Với client Python, bật client-side caching qua RESP3 (CLIENT TRACKING) để giảm round-trip cho dữ liệu đọc nhiều/ghi ít - kỹ thuật production quan trọng.

Ngày 10

Sáng: Redis Rate Limiting: giới hạn tốc độ truy cập API.

Chiều: Redis Queues: xây dựng hệ thống xử lý công việc bất đồng bộ.

Bài tập:

  1. Cài đặt rate limiting cho một API sử dụng Redis.

  2. Xây dựng một hệ thống gửi email bất đồng bộ sử dụng Redis queue.

  3. Tìm hiểu về các thư viện hỗ trợ Redis queue như RQ (Python).

Tuần 3: Cấu trúc dữ liệu nâng cao & AI

Ngày 11

Sáng: Redis Streams: xây dựng ứng dụng log và message queue.

Chiều: Redis HyperLogLog: đếm số lượng phần tử duy nhất với độ chính xác cao.

Bài tập:

  1. Sử dụng Redis Streams để ghi lại lịch sử hoạt động người dùng.

  2. Ước tính số lượng khách truy cập website duy nhất bằng HyperLogLog.

  3. Nghiên cứu sâu Consumer Group (XREADGROUP, XACK, XPENDING) để hiểu cơ chế xử lý tin nhắn "at-least-once" - nền tảng cho hệ thống queue production thật, không chỉ demo.

Ngày 12

Sáng: Redis Bloom Filter: kiểm tra sự tồn tại của phần tử với xác suất cao.

Chiều: Redis Geospatial Indexes: lưu trữ và truy vấn dữ liệu vị trí địa lý.

Bài tập:

  1. Sử dụng Bloom Filter để kiểm tra xem một email đã tồn tại hay chưa.

  2. Lưu trữ vị trí của các cửa hàng trong Redis và tìm kiếm các cửa hàng gần nhất.

  3. Tìm hiểu về các ứng dụng khác của Geospatial Indexes.

Ngày 13

Sáng: Redis Time Series: lưu trữ và phân tích dữ liệu chuỗi thời gian.

Chiều: Redis Functions cho xử lý dữ liệu theo thời gian thực: đăng ký hàm xử lý khi có thay đổi dữ liệu, kết hợp với Streams để xây dựng luồng xử lý sự kiện.

Bài tập:

  1. Sử dụng Redis Time Series để lưu trữ dữ liệu nhiệt độ và độ ẩm.

  2. Xây dựng một luồng xử lý sự kiện đơn giản: khi có message mới trong Stream, một Function/consumer sẽ tự động cập nhật một Sorted Set thống kê.

  3. Tìm hiểu thêm về các trường hợp sử dụng khác của Redis Streams kết hợp Time Series.

Ngày 14

Sáng: Vector Sets (Redis 8) hoặc module valkey-search (Valkey) - cấu trúc dữ liệu cho tìm kiếm tương tự vector, nền tảng cho các ứng dụng AI như semantic search, recommendation, RAG (Retrieval-Augmented Generation).

Chiều: Kết hợp Vector Sets với Redis Functions để xây dựng một luồng xử lý AI đơn giản theo thời gian thực (ví dụ: tự động index vector khi có dữ liệu mới).

Bài tập:

  1. Nhúng (embed) một vài đoạn văn bản thành vector bằng một model embedding bất kỳ (có thể dùng model open-source nhỏ), lưu vào Redis bằng Vector Set, và thực hiện truy vấn similarity search.

  2. Xây dựng một pipeline RAG tối giản: câu hỏi → tìm đoạn văn liên quan bằng vector search trong Redis → (tuỳ chọn) gửi cho một LLM để trả lời.

  3. So sánh chi phí/độ phức tạp giữa dùng Vector Sets trong Redis so với một vector DB chuyên dụng (Milvus, Pinecone, pgvector) - khi nào nên/không nên dùng Redis cho việc này.

Ngày 15

Sáng: Ôn tập lại các kiến thức đã học trong tuần.

Chiều: Làm một dự án nhỏ tổng hợp các kiến thức đã học (ví dụ: hệ thống search + rate limiting + cache kết hợp).

Tuần 4: Dự án ứng dụng Chat Realtime

Ngày 16

Sáng: Bắt đầu dự án ứng dụng chat realtime:

  • Xác định các tính năng chính: gửi/nhận tin nhắn văn bản, hình ảnh, tạo phòng chat riêng tư/công khai, hiển thị danh sách người dùng trực tuyến.

  • Lên kế hoạch chi tiết cho dự án: công nghệ sử dụng (Redis Pub/Sub, Streams, WebSocket), timeline.

Chiều: Thiết kế cơ sở dữ liệu Redis cho dự án chat:

  • Sử dụng Hash để lưu trữ thông tin người dùng (username, avatar, trạng thái online/offline) - có thể dùng HEXPIRE trên field trạng thái thay vì key riêng + EXPIRE, để giảm số lượng key và đơn giản hoá logic dọn dẹp.

  • Sử dụng Sorted Set để lưu trữ danh sách phòng chat và danh sách người dùng trong mỗi phòng.

  • Sử dụng Stream để lưu trữ lịch sử tin nhắn của mỗi phòng chat.

Bài tập:

  1. Vẽ sơ đồ cấu trúc dữ liệu Redis cho ứng dụng chat.

  2. Viết các lệnh Redis để tạo và thao tác với dữ liệu mẫu (tạo người dùng, phòng chat, gửi tin nhắn).

  3. Nghiên cứu thư viện Redis client cho ngôn ngữ lập trình bạn chọn (ví dụ redis-py cho Python, go-redis cho Golang, redis-rs cho Rust).

Ngày 17

Sáng: Xây dựng backend cho ứng dụng chat:

  • Sử dụng ngôn ngữ lập trình và framework bạn quen thuộc (Python/Flask, Node.js/Express, Golang/Gin...).

  • Tích hợp Redis client vào backend, kết nối bằng user ACL riêng (không dùng user default không giới hạn quyền).

  • Viết API/hàm xử lý: đăng ký/đăng nhập, cập nhật trạng thái online/offline, tạo phòng chat, thêm người dùng vào phòng, gửi tin nhắn và lưu vào Stream.

Chiều: Triển khai tính năng gửi/nhận tin nhắn văn bản:

  • Sử dụng WebSocket để tạo kết nối hai chiều giữa client và server.

  • Khi có tin nhắn mới, server publish lên kênh Pub/Sub tương ứng với phòng chat.

  • Client lắng nghe kênh Pub/Sub và hiển thị tin nhắn mới.

Bài tập:

  1. Viết API đăng ký/đăng nhập người dùng và cập nhật trạng thái online/offline trong Redis.

  2. Viết API tạo phòng chat và thêm người dùng vào phòng.

  3. Viết API gửi tin nhắn văn bản và lưu vào Redis Stream.

Ngày 18

Sáng: Triển khai tính năng gửi/nhận hình ảnh:

  • Cho phép người dùng tải lên hình ảnh, lưu file ở storage ngoài (S3 hoặc tương đương) và lưu đường dẫn vào Redis.

  • Gửi đường dẫn hình ảnh cùng với tin nhắn văn bản.

Chiều: Xây dựng giao diện người dùng (frontend):

  • HTML, CSS, JavaScript và framework frontend (React, Vue.js, Angular...).

  • Hiển thị danh sách phòng chat và danh sách người dùng trực tuyến.

  • Hiển thị lịch sử tin nhắn và cho phép gửi tin nhắn mới.

Bài tập:

  1. Viết chức năng tải lên và hiển thị hình ảnh trong ứng dụng chat.

  2. Tạo giao diện người dùng cho đăng ký/đăng nhập, tạo phòng chat, gửi tin nhắn.

  3. Kết nối frontend với backend qua WebSocket.

Ngày 19

Sáng: Hoàn thiện tính năng phòng chat riêng tư/công khai:

  • Cho phép tạo phòng chat và đặt chế độ riêng tư/công khai.

  • Chỉ người được mời mới tham gia được phòng riêng tư.

Chiều: Xử lý lỗi và tối ưu hóa hiệu suất:

  • Xử lý các trường hợp lỗi: mất kết nối Redis, tin nhắn không hợp lệ, người dùng không tồn tại.

  • Tối ưu hóa đọc/ghi Redis để giảm độ trễ, dùng pipelining/Function khi cần.

Bài tập:

  1. Viết API tạo phòng chat và kiểm tra tính hợp lệ của dữ liệu đầu vào.

  2. Thêm cơ chế xác thực trước khi tham gia phòng chat riêng tư.

  3. Sử dụng pipelining hoặc Redis Function để tối ưu hóa các thao tác với Redis.

Ngày 20

Sáng: Triển khai tính năng hiển thị danh sách người dùng trực tuyến:

  • Cập nhật trạng thái online/offline khi đăng nhập/đăng xuất hoặc đóng trình duyệt.

  • Hiển thị danh sách người dùng trực tuyến trong mỗi phòng chat.

Chiều: Triển khai dự án lên môi trường production:

  • Chuẩn bị môi trường production (server, Redis server).

  • Bắt buộc: bật ACL cho user backend dùng để kết nối Redis, bật TLS nếu backend và Redis không cùng mạng riêng.

  • Cấu hình và triển khai backend/frontend, kiểm tra hoạt động trên production.

Bài tập:

  1. Viết API lấy danh sách người dùng trực tuyến trong một phòng chat.

  2. Cấu hình Redis để lưu trữ dữ liệu persistent (AOF hoặc RDB) và bật ACL/TLS.

  3. Viết tài liệu hướng dẫn sử dụng và triển khai ứng dụng chat.

Tuần 5: Nâng cao & Mở rộng quy mô

Ngày 21

Sáng: Nghiên cứu chuyên sâu về Redis Streams: consumer group, XREADGROUP, XACK, XPENDING.

Chiều: Áp dụng Redis Streams vào ứng dụng chat: lưu lịch sử tin nhắn hiệu quả hơn, dùng consumer group để xử lý tin nhắn đồng thời và đảm bảo tính nhất quán.

Bài tập:

  1. Viết một consumer đơn giản để đọc tin nhắn từ một Redis Stream.

  2. Sử dụng XREADGROUP để đọc tin nhắn từ một Stream với consumer group.

  3. Xây dựng một ứng dụng đơn giản để theo dõi các sự kiện hệ thống bằng Redis Streams.

Ngày 22

Sáng: Tìm hiểu về các kỹ thuật mở rộng quy mô cho ứng dụng chat realtime: sharding, load balancing, caching; các mô hình kiến trúc microservices/serverless.

Chiều: Áp dụng vào ứng dụng chat: tách microservices độc lập (quản lý người dùng, phòng chat, tin nhắn), dùng Redis Cluster để phân tán dữ liệu, dùng load balancer để phân phối traffic.

Bài tập:

  1. Thiết kế kiến trúc microservices cho ứng dụng chat.

  2. Cài đặt và cấu hình Redis Cluster.

  3. Nếu hạ tầng chạy trên AWS/GCP, benchmark thực tế Redis 8 vs Valkey trên cùng loại instance để tự đưa ra quyết định dựa trên số liệu đo được, không chỉ theo công bố của nhà cung cấp.

Ngày 23

Sáng: Thêm tính năng gửi tin nhắn thoại: ghi âm, lưu file âm thanh ở storage ngoài, lưu đường dẫn vào Redis.

Chiều: Thêm tính năng video call: tích hợp thư viện/dịch vụ WebRTC, dùng Redis quản lý trạng thái cuộc gọi và trao đổi thông tin giữa người tham gia.

Bài tập:

  1. Tìm hiểu về WebRTC và cách tích hợp vào ứng dụng chat.

  2. Viết code xử lý ghi âm, gửi và phát lại tin nhắn thoại.

  3. Triển khai tính năng video call đơn giản giữa hai người dùng.

Ngày 24

Sáng: Đọc các bài viết/blog chính thức: theo dõi redis.io (cho Redis 8.x) và valkey.io (cho Valkey) - cả hai dự án phát triển độc lập và khá nhanh, nên đây là nguồn đáng tin cậy nhất để không bị lệch thông tin license/tính năng.

Chiều: Tìm hiểu các ứng dụng khác của Redis trong gaming, IoT, fintech, AI/RAG và các lĩnh vực khác.

Bài tập:

  1. Đọc ít nhất 3 bài viết về Redis/Valkey từ nguồn chính thức hoặc uy tín.

  2. Tham gia một diễn đàn/cộng đồng Redis hoặc Valkey và đặt/trả lời một câu hỏi.

  3. Tìm hiểu một ứng dụng cụ thể của Redis trong lĩnh vực bạn quan tâm.

Ngày 25

Sáng: Tổng kết quá trình học tập và thực hành: xem lại kiến thức đã học và các dự án đã thực hiện, đánh giá điểm mạnh/yếu.

Chiều: Lập kế hoạch tiếp tục học tập và phát triển với Redis: đặt mục tiêu cụ thể, tìm tài liệu/khóa học/dự án mới.

Bài tập:

  1. Viết một bản tóm tắt về những gì bạn đã học được trong khóa học Redis này.

  2. Lập danh sách các mục tiêu cụ thể muốn đạt được với Redis trong 3 tháng tới.

  3. Tìm một khóa học nâng cao về Redis/Valkey hoặc một dự án thực tế để áp dụng kiến thức đã học.

Tuần 6: Production Readiness

Ngày 26 - Observability

Sáng: Thiết lập giám sát Redis/Valkey bằng Prometheus + Grafana (dùng redis_exporter hoặc metrics stream engine tích hợp của Redis Software). Các chỉ số bắt buộc theo dõi: used_memory, evicted_keys, rejected_connections, keyspace_hits/misses, độ trễ lệnh (LATENCY), số client blocked.

Chiều: Thiết lập alerting (ví dụ Alertmanager) cho các ngưỡng nguy hiểm: bộ nhớ gần maxmemory, tỉ lệ cache miss tăng bất thường, replica bị lag.

Bài tập:

  1. Dựng dashboard Grafana hiển thị 6 chỉ số trên cho instance Redis đang chạy.

  2. Tạo alert khi used_memory vượt 80% maxmemory.

  3. Viết runbook ngắn: "Khi alert X xảy ra, làm gì trước tiên?"

Ngày 27 - Bảo mật & Compliance

Sáng: Thiết kế mô hình ACL cho hệ thống nhiều team (mỗi team một user, quyền theo namespace key). Bật TLS bắt buộc cho kết nối client và giữa các node cluster/replica.

Chiều: Đánh giá rủi ro license: nếu tổ chức đang cung cấp Redis như một dịch vụ cho khách hàng bên ngoài, cả AGPLv3 (network copyleft) và SSPLv1/RSALv2 đều có ràng buộc riêng cần đọc kỹ - đây không phải lời khuyên pháp lý, chỉ là bước rà soát kỹ thuật trước khi hỏi bộ phận pháp lý/compliance.

Bài tập:

  1. Viết chính sách ACL cho 3 loại user: readonly-app, readwrite-app, admin-ops.

  2. Bật TLS 1.2+ giữa client và Redis, xác minh bằng cách bắt gói tin trước và sau khi bật.

  3. Viết một trang tóm tắt (không cần chính xác pháp lý) về license nào phù hợp với mô hình kinh doanh của dự án bạn.

Ngày 28 - Backup, Disaster Recovery & Chaos Testing

Sáng: Thiết kế chiến lược backup thực tế: RDB snapshot định kỳ + AOF cho durability cao, lưu trữ off-site (S3 hoặc tương đương), kiểm thử restore định kỳ (không chỉ backup mà không bao giờ test restore).

Chiều: Chaos testing: chủ động giết master trong cluster, ngắt mạng giữa các node, làm đầy bộ nhớ để quan sát eviction policy hoạt động đúng chưa (maxmemory-policy).

Bài tập:

  1. Viết script tự động backup RDB/AOF ra S3 (hoặc MinIO local) theo lịch.

  2. Thực hiện restore từ backup và xác minh dữ liệu đúng.

  3. Chaos test: kill node master trong cluster đang có traffic, đo thời gian downtime thực tế so với thời gian failover lý thuyết.

Ngày 29 - Vận hành trên Kubernetes & IaC

Sáng: Triển khai Redis/Valkey trên Kubernetes bằng Helm chart hoặc Operator (Redis Operator hoặc Bitnami chart cho Valkey). Cấu hình resource limits, PodDisruptionBudget, anti-affinity để tránh tất cả replica cùng rơi vào một node.

Chiều: Quản lý config bằng Infrastructure-as-Code (Terraform/Helm values trong Git) thay vì chỉnh tay, để mọi thay đổi cấu hình có review và lịch sử.

Bài tập:

  1. Deploy một cluster Redis/Valkey 3 node trên Kubernetes (minikube/kind đủ để thực hành).

  2. Viết Helm values file định nghĩa toàn bộ config (không sửa tay trong pod).

  3. Test rolling upgrade version Redis mà không downtime.

Ngày 30 - Capacity Planning & Tổng kết

Sáng: Capacity planning: tính toán memory cần thiết dựa trên số lượng key, kích thước trung bình, overhead cấu trúc dữ liệu; lên kế hoạch scale trước khi hết bộ nhớ, không phải sau.

Chiều: Load testing bằng redis-benchmark/memtier_benchmark hoặc k6 (nếu benchmark qua ứng dụng) để xác định điểm giới hạn thực tế của hệ thống trước khi đưa vào production.

Bài tập:

  1. Ước tính dung lượng cần cho 1 triệu user session (giả định kích thước trung bình mỗi session).

  2. Load test hệ thống chat đã xây ở Tuần 4 để tìm điểm nghẽn (CPU, memory, hay network).

  3. Viết một "Production Readiness Checklist" tổng hợp toàn bộ Tuần 6 - dùng lại cho mọi dự án Redis sau này.

Knowledge

Part 1 of 50