Redis của người phỏng vấn tại Kakao, xử lý hơn 500.000 lượt truy cập mỗi giây
Có lẽ bạn đã từng cảm thấy bế tắc khi đang sử dụng Redis nhưng lại không thể giải thích được tại sao phải thiết kế như vậy, hay tại sao mô hình này lại ra đời. Bản thân tôi, thông qua kinh nghiệm làm việc thực tế và vai trò người phỏng vấn, đã luôn xem Redis không chỉ là một bộ nhớ đệm đơn thuần, mà là một thành phần cốt lõi quyết định tính ổn định và khả năng mở rộng của dịch vụ. Khóa học này không bắt bạn phải học thuộc lòng các câu lệnh, mà dựa trên kinh nghiệm của tôi để giải thích việc lựa chọn cấu trúc nào trong môi trường lưu lượng truy cập thực tế cùng những đánh giá về sự đánh đổi (trade-off). Từ đó, giúp bạn tự thiết lập các tiêu chuẩn để có thể tự tin giải thích trong cả công việc thực tế lẫn khi phỏng vấn.
Vượt xa việc chỉ nhập các câu lệnh đơn thuần, đây là một bài giảng cho thấy những điểm cần lưu ý tùy theo môi trường hạ tầng thực tế và cả góc nhìn về hash slot... Tôi nghĩ đây là bài giảng cho thấy thế nào là một nhà phát triển thực thụ chứ không phải chỉ là một người viết code đơn thuần, và một nhà phát triển thực thụ cần phải biết những gì về Redis.
Cá nhân tôi nghĩ rằng thật không đúng khi nói rằng không có gì để học từ bài giảng này. Tôi thấy có rất nhiều nội dung để học hỏi (không phải dưới góc độ câu lệnh đơn thuần mà là dưới góc độ thực tế).
Tôi đã hiểu được một nhà phát triển thực thụ chứ không phải một người viết code thì cần phải trăn trở về điều gì. Xin cảm ơn.
5.0
02년생 개발자
86% đã tham gia
Nhân dịp Tết, mình đã thanh toán để xem thử và học hỏi được nhiều hơn mong đợi. Đây đúng là phong thái của một nhà phát triển thực thụ.... Mình thấy bản thân còn thiếu sót nhiều quá ㅠㅠ Cảm ơn bạn rất nhiều!!
5.0
warna
86% đã tham gia
Vì đây là bài giảng đặc biệt nhân dịp Tết nên mình đã thanh toán và xem ngay lập tức!! Mình thường xuyên theo dõi các bài giảng của người chia sẻ, và lần nào cũng vậy, nội dung đều rất tuyệt vời và chỉ tập trung vào những điểm cốt lõi!!
Mình nghĩ bài giảng lần này cũng rất thực tế, giúp người học tiếp thu được nhiều nội dung và xây dựng nền tảng vững chắc.
1. Phần lớn thời lượng là thực hành.
- Giảng viên giải thích đầy đủ lý thuyết, nhưng phần thực hành không hề thiếu hụt mà ngược lại, mình thấy phần thực hành còn nhiều hơn cả lý thuyết.
2. Nội dung ngắn gọn và mang tính thực tiễn cao.
- Không có nội dung rườm rà, mình đã học được các phương pháp và mô hình sử dụng trong thực tế.
3. Tập trung hoàn toàn vào Redis.
- Đây có thể vừa là nhược điểm vừa là ưu điểm, nhưng nếu bạn chỉ muốn học về dịch vụ Redis thì mình nghĩ không có bài giảng nào tốt hơn bài này.
Mình sẽ rất mong chờ các bài giảng tiếp theo. Cảm ơn bạn đã tạo ra một bài giảng chất lượng như vậy!!
Bạn sẽ nhận được điều này sau khi học.
Tầm nhìn để có thể giải thích được tại sao phải dùng Redis như vậy, chứ không chỉ đơn thuần là “dùng” nó.
Kỹ năng trả lời thực chiến bằng cấu trúc và sự đánh đổi (Trade-off) thay vì học thuộc lòng trước các câu hỏi của người phỏng vấn.
Tiêu chí để lựa chọn Single, Replica, Sentinel và Cluster theo từng tình huống
Cách tư duy để tránh sử dụng Redis sai cách trong thực tế làm việc
Góc nhìn xem Redis là thành phần cốt lõi của dịch vụ thay vì chỉ là bộ nhớ đệm (cache)
Phát triển · Lập trình · Backend
Redis của người phỏng vấn tại Kakao, nơi xử lý hơn 500.000+ lượt truy cập mỗi giây
Dù đang sử dụng Redis, nhưng thật khó để giải thích tại sao phải thiết kế như vậy. Khóa học này không phải là việc ghi nhớ các câu lệnh, mà tập trung vào việc lựa chọn cấu trúc nào trong môi trường lưu lượng truy cập thực tế và cách đọc hiểu các đánh giá đánh đổi (Trade-off). Tôi sẽ giúp bạn xây dựng các tiêu chuẩn để có thể tự mình giải thích trong cả phỏng vấn lẫn công việc thực tế.
Mức độ Nhập môn
7 giờ 21 phút
28 bài giảng
Trọng tâm thực hành
Cung cấp tài liệu học tập
Thời hạn khóa học vô hạn
Lộ trình học tập được biên soạn bởi người phỏng vấn tại Kakao đương nhiệm · Thực hành trên macOS · Docker · Node.js
Lý do khóa học này bắt đầu
Người phỏng vấn đương nhiệm của Kakao đã đề xuất trước
Dưới đây là nội dung cuộc đối thoại thực tế. Với lý do "chỉ với bài giảng Redis tự làm thôi là chưa đủ", người phỏng vấn đã trực tiếp đứng ra đề nghị sẽ tự mình hệ thống lại và truyền đạt nội dung.
Người phỏng vấn KakaoHong ơi, tôi có việc này muốn làm.
Cái gì vậy… Tôi đã dùng hết cả ngày nghỉ phép năm để quay hết những chủ đề mình muốn làm rồi mà ㅠㅠ
Người phỏng vấn KakaoTrước đây cậu đã từng tự mình xử lý Redis rồi đúng không? Lại còn chia nó làm hai phần nữa. Tôi không hài lòng với điều đó lắm. Tại sao cậu chỉ xử lý được đến mức đó thôi? ㅋㅋ Tôi muốn hướng dẫn cho cậu sâu hơn nữa.
Thành thật mà nói, tôi nghĩ Redis cũng quan trọng như Database vậy. Tôi nhất định sẽ không bao giờ tuyển những người không biết về nó trong buổi phỏng vấn. Mà vốn dĩ cũng chẳng có ai là không biết cả.
Được rồi… Tôi phải làm theo những gì được yêu cầu thôi. Thay vào đó, hãy trực tiếp sắp xếp và đưa cho tôi tất cả các tệp thực hành cũng như nội dung lý thuyết. Dạo này tôi thực sự không có thời gian đâu.
Người phỏng vấn KakaoHaha được rồi. Tôi sẽ tự mình tổng hợp rồi gửi cho. Đợi một chút nhé.
Đó là cách khóa học này được tạo ra. Đây chính là nội dung mà người phỏng vấn đã nói rằng "ngay cả khi phải tự mình tổng hợp lại, tôi vẫn muốn truyền đạt cho bạn".
“
Những người không biết Redis, tôi tuyệt đối sẽ không tuyển trong buổi phỏng vấn.
— Nhà phát triển server · Người phỏng vấn đương nhiệm tại Kakao
Có những khoảnh khắc như thế này, đúng không?
Redis, biết cách dùng nhưng lại lúng túng khi giải thích
Redis là một kho lưu trữ dữ liệu trong bộ nhớ (in-memory data store), được sử dụng ở những vị trí quyết định tốc độ và sự ổn định của backend như bộ nhớ đệm (cache), phiên làm việc (session), hàng đợi (queue) hay bảng xếp hạng (leaderboard). Mặc dù các câu lệnh đã trở nên quen thuộc, nhưng khi được hỏi "tại sao lại là cấu trúc này" thì nhiều người lại lúng túng. Vấn đề không nằm ở câu lệnh, mà nằm ở sự phán đoán đằng sau đó.
Đang sử dụng Redis nhưng thật khó để giải thích tại sao lại thiết kế như vậy.
Khi được hỏi về Redis trong buổi phỏng vấn, tôi luôn chỉ dừng lại ở những câu trả lời hời hợt.
Chỉ sử dụng cache như một tính năng đơn thuần mà chưa từng suy nghĩ về cấu trúc hay sự đánh đổi (trade-off)
Không có tiêu chuẩn rõ ràng về việc khi nào nên chọn Single, Replica, Sentinel hay Cluster.
Đã từng gặp phải sự cố hoặc vấn đề hiệu suất của Redis trong thực tế, hoặc luôn cảm thấy lo lắng rằng chúng có thể xảy ra.
Cùng một câu hỏi, những câu trả lời khác nhau
"Redis 환경 구성 패턴을 설명해 주세요"
Chỉ với một câu hỏi mà người phỏng vấn thường xuyên đặt ra này, chiều sâu của ứng viên sẽ được phân định.
BEFORE
Người phỏng vấn: Hãy giải thích về các mô hình cấu hình môi trường Redis.
"À... vâng, đợi tôi một lát. Theo tôi được biết thì nó bao gồm bốn loại cấu hình: Single, Replica, Sentinel và Sharding Cluster."
Liệt kê danh sách đã học thuộc lòng rồi kết thúc. Không giải thích được tại sao cấu trúc đó lại ra đời và mỗi loại giải quyết vấn đề gì.
AFTER · 이 강의를 듣고 나면
Người phỏng vấn: Hãy giải thích các mô hình cấu hình môi trường Redis.
"Single là một thực thể đơn lẻ nên khó đảm bảo tính sẵn sàng cao và giới hạn về bộ nhớ. Vì vậy, cấu trúc Replica đã ra đời, nhưng vẫn còn vấn đề là việc chọn lại Master phải thực hiện thủ công. Để tự động hóa việc này, Sentinel đã xuất hiện, và khi quy mô lớn hơn nữa, chúng ta sẽ chuyển sang Sharding Cluster để chia nhỏ dữ liệu..."
Giải thích theo một luồng logic về lý do tại sao cấu trúc đó ra đời, nó giải quyết vấn đề gì và những đánh đổi (trade-off) nào còn tồn tại. Đây là sự thấu hiểu chứ không phải là học vẹt.
Những gì nhận được sau khóa học
5 điều khóa học này để lại
Tầm nhìn để có thể giải thích không phải là "dùng" Redis mà là "tại sao phải dùng như thế"
Khả năng trả lời phỏng vấn thực tế bằng cấu trúc và sự đánh đổi (Trade-off) thay vì học vẹt
Tiêu chuẩn lựa chọn Single, Replica, Sentinel, Cluster theo từng tình huống
Tư duy để tránh trước việc sử dụng Redis sai cách trong thực tế
Góc nhìn xem Redis không chỉ là bộ nhớ đệm mà còn là thành phần cốt lõi của dịch vụ
Lộ trình học tập
Tổng cộng 28 bài giảng · 7 giờ 21 phút
Lý thuyết và thực hành luôn đi đôi với nhau. Bạn sẽ được nắm vững khái niệm của từng cấu trúc dữ liệu và sau đó làm quen ngay thông qua các bài thực hành.
섹션 1. 강의 소개 3강 · 5분
Giới thiệu khóa học · Xem trước05:35
Source CodeTài liệu
Các trang hữu ích liên quan đến Redis · Xem trướcTài liệu
섹션 2. Redis 입문 2강 · 35분
Công ty nào cũng dùng Redis hết, rốt cuộc cậu là cái gì vậy?18:28
Các kỹ thuật thiết kế môi trường Cluster đa dạng của Redis16:54
섹션 3. 기본 자료구조 · 명령어 · 실습 10강 · 2시간 39분
80% các kiểu sử dụng Redis là kiểu String31:13
[Thực hành] Thiết lập môi trường thử nghiệm và String14:18
Hàng đợi ưu tiên sử dụng Blocking, Redis List23:11
[Thực hành] Thực hành Redis List và Debug BLPOP12:05
Redis Set không cho phép trùng lặp15:50
[Thực hành] Redis Set không cho phép trùng lặp08:08
Redis Hash có thể hiệu quả về bộ nhớ hơn String17:50
[Thực hành] Redis Hash05:50
Redis Sorted Set cho bảng xếp hạng và Leaderboard trong game16:21
[Thực hành] Sorted Set14:58
섹션 4. 실무 관점의 주의사항 · Memory Persistence 2강 · 42분
Nội dung này đề cập đến các lưu ý khi sử dụng Redis và chiến lược duy trì dữ liệu (persistence) dễ bị bỏ qua trong thực tế.42:00
섹션 5. Redis를 전문가처럼 쓰기 위한 개념 · 실습 8강 · 1시간 58분
Không chỉ dừng lại ở việc sử dụng đơn thuần, bạn sẽ được học các mô hình sử dụng chuyên sâu và khái niệm của chuyên gia thông qua thực hành.1:58:00
섹션 6. Redis 환경설정 Master Section 3강 · 1시간 19분
Làm chủ khía cạnh thiết lập thông qua việc trực tiếp thực hiện cấu hình môi trường.1:19:00
Thực tế của thị trường tuyển dụng
Redis giờ đây không còn là tùy chọn nữa mà là bắt buộc
Chỉ cần nhìn lướt qua các tin tuyển dụng, thật khó để tìm thấy vị trí backend nào mà không yêu cầu Redis.
NAVER CloudPhát triển BE dịch vụYêu cầu Redis
NEXONLập trình viên máy chủYêu cầu Redis
KBNhà phát triển Backend tập đoànYêu cầu Redis
Không có công ty danh tiếng nào mà không sử dụng Redis. Thậm chí trong các dịch vụ lớn, cũng có nhiều trường hợp sử dụng sai do không hiểu rõ về Redis. Nói cách khác, điều đó có nghĩa là những người biết cách sử dụng đúng chuẩn sẽ có thể tiến xa hơn bấy nhiêu.
Dành cho những người như thế này
Đối tượng học tập
Những nhà phát triển đang sử dụng Redis nhưng gặp khó khăn trong việc giải thích lý do tại sao lại sử dụng nó như vậy
Những nhà phát triển luôn chỉ đưa ra được những câu trả lời nông cạn khi gặp các câu hỏi về Redis trong buổi phỏng vấn
Những nhà phát triển chỉ sử dụng bộ nhớ đệm (cache) như một tính năng đơn thuần mà không cân nhắc về cấu trúc hay sự đánh đổi (trade-off)
Những nhà phát triển đã từng gặp phải sự cố hoặc vấn đề về hiệu suất của Redis trong thực tế, hoặc đang lo lắng rằng mình sẽ gặp phải chúng.
Những nhà phát triển muốn hiểu về Redis dưới góc nhìn của người phỏng vấn thay vì chỉ học thuộc lòng đơn thuần.
Công nghệ được đề cập · Môi trường thực hành
Thực hành bằng cái gì?
Redis
String
Danh sách
Set
Hash
Sorted Set
JavaScript
Node.js v23.11.0
Docker 28.0.0
backend
macOS (M3)
Tất cả các bài thực hành đều được tiến hành bằng cách khởi tạo môi trường Redis bằng Docker. Các ví dụ được viết bằng JavaScript (Node.js) dưới góc nhìn của backend và được sắp xếp dựa trên hệ điều hành macOS, các bài thực hành sẽ nối tiếp ngay sau bài giảng lý thuyết về từng cấu trúc dữ liệu.
Cảm nhận của những người đã học trước đó
"Không chỉ là một coder đơn thuần, mà là một nhà phát triển thực thụ"
★★★★★
"Tôi nghĩ đây là một bài giảng cho thấy thế nào là một nhà phát triển thực thụ chứ không chỉ là một người viết mã đơn thuần, chỉ ra những phần mà một nhà phát triển Redis thực thụ cần phải biết, từ việc không chỉ dừng lại ở nhập câu lệnh mà còn cả những điểm cần lưu ý trong môi trường hạ tầng và góc nhìn về hash slot."
— Amy
★★★★★
"Nhân dịp Tết tôi đã thử thanh toán để xem và học được nhiều hơn mong đợi. Đây mới thực sự là một nhà phát triển có thực lực... Tôi thấy thật hổ thẹn quá ㅠㅠ Cảm ơn bạn!"
— Lập trình viên sinh năm 2002
★★★★★
"Hầu hết thời gian là thực hành, nội dung được truyền đạt một cách súc tích và thực tế. Đây là một bài giảng tập trung hoàn toàn vào Redis, giúp bạn nắm vững kiến thức cơ bản một cách vững chắc."
— warna
Câu hỏi thường gặp
Những điều bạn có thể thắc mắc trước tiên
Redis는 어떤 데이터베이스인가요?
Redis là một kho lưu trữ dữ liệu trong bộ nhớ (in-memory data store) mã nguồn mở, lưu trữ dữ liệu trong bộ nhớ thay vì trên đĩa cứng. Do đó, tốc độ đọc và ghi cực kỳ nhanh, được sử dụng rộng rãi trong các vị trí quyết định tốc độ và tính ổn định của backend như bộ nhớ đệm (cache), phiên làm việc (session), bảng xếp hạng (leaderboard) và hàng đợi (queue). Quan điểm của bài giảng này là coi Redis không chỉ đơn thuần là một bộ nhớ đệm mà còn là một thành phần cốt lõi của dịch vụ.
실습 환경은 어떻게 구성하나요?
Chúng tôi sẽ tiến hành bằng cách tự khởi chạy môi trường Redis bằng Docker. Mã ví dụ được viết bằng JavaScript (Node.js) và được sắp xếp dựa trên hệ điều hành macOS. Bạn có thể thực hành toàn bộ trên máy cục bộ (local) mà không cần thanh toán thêm cho các dịch vụ đám mây trả phí.
Redis를 처음 써봐도 따라갈 수 있나요?
Vâng. Đây là khóa học dành cho người mới bắt đầu, chúng ta sẽ cùng tìm hiểu cả khái niệm lẫn thực hành từ các cấu trúc dữ liệu cơ bản như String, List, Set, Hash và Sorted Set. Chỉ cần bạn có kinh nghiệm lập trình cơ bản là đủ.
싱글·레플리카·센티널·클러스터, 언제 뭘 쓰나요?
Khóa học sẽ đề cập đến lý do tại sao mỗi cấu trúc lại ra đời và những đánh đổi (trade-off) của chúng dựa trên tiêu chí lựa chọn theo từng tình huống. Mục tiêu không phải là học thuộc lòng các câu lệnh, mà là giúp bạn có thể tự mình giải thích được nên chọn cấu hình nào trong môi trường lưu lượng truy cập thực tế.
Ai là người giảng dạy?
Được xây dựng bởi các nhà phát triển máy chủ và người phỏng vấn đang làm việc thực tế
Người chia sẻ kiến thức · Phát triển máy chủ nền tảng tại Pangyo
Hong
Tôi đang đảm nhận việc phát triển máy chủ nền tảng (platform server) tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức để chia sẻ những phương pháp tự học cũng như các vấn đề và giải pháp gặp phải trong thực tế. Các bài giảng không được thực hiện một mình mà được xây dựng cùng với nhiều nhà phát triển đang làm việc trong ngành.
Hơn 9.700 học viên tích lũy trên Inflearn · Đánh giá khóa học 4.7
[前] Phát triển Backend Blockchain · Metaverse
[Hiện tại] Nhà phát triển Server nền tảng tại Pangyo
Kakao · Nhà phát triển Server 12 năm kinh nghiệm · Người phỏng vấn
Choi
Tôi là nhà phát triển với 12 năm kinh nghiệm, hiện đang đảm nhận vai trò phát triển máy chủ và người phỏng vấn tại trụ sở chính của Kakao. Tôi sẽ đưa những kinh nghiệm xử lý lưu lượng truy cập lớn hơn nhiều so với các nền tảng thông thường vào bài giảng, giúp bạn chuẩn bị dựa trên những câu hỏi thực tế thường gặp trong các buổi phỏng vấn.
[Hiện tại] Nhà phát triển máy chủ · Người phỏng vấn tại trụ sở chính Kakao
Kinh nghiệm làm việc trong môi trường lưu lượng truy cập quy mô hơn 500,000+ lượt mỗi giây
Tổng hợp các khái niệm và quan điểm dựa trên các câu hỏi phỏng vấn thực tế
Hãy cùng nhau phát triển nhé
Phòng chat mở dành cho nhà phát triển
Tôi đang vận hành một phòng chat mở dành cho các nhà phát triển để chia sẻ về sự nghiệp, tình huống thực tế trong công việc và kỹ năng chuyên môn. Đừng ngần ngại chia sẻ những thắc mắc khi nghe bài giảng hay những trăn trở trong công việc thực tế nhé.
Trở thành một nhà phát triển biết diễn giải và giải thích cùng một câu hỏi dưới những góc nhìn khác nhau. Hãy thử đưa Redis trở thành cốt lõi trong dịch vụ của bạn.
Tôi bắt đầu học lập trình vì cảm thấy hứng thú sau một thời gian dài lười biếng ở nhà, và hiện tại tôi đang đảm nhận việc phát triển máy chủ nền tảng (platform server) tại Pangyo. Tôi tiếp tục hoạt động với tư cách là người chia sẻ kiến thức vì muốn cung cấp cho các bạn phương pháp học tập của bản thân cũng như những vấn đề và giải pháp đa dạng mà các bạn có thể gặp phải trong thực tế.
Bài giảng không chỉ được tạo ra từ kiến thức của riêng tôi. Mọi bài giảng đều có sự đồng hành của những người cộng sự.
Mới xem được khoảng một nửa thôi mà đã giúp ích cho tôi rất nhiều rồi.
Tôi đang rất tận hưởng nội dung này vì bạn đã giải đáp một cách rõ ràng những điều mà tôi đang thắc mắc khi sử dụng Redis gần đây, xin cảm ơn bạn.
Chào bạn Dolgorae Chukje!! Cảm ơn bạn đã để lại đánh giá tốt nhé!! Sau này mình sẽ cung cấp thêm nhiều nội dung hữu ích hơn nữa!! Chúc bạn một ngày tốt lành nhé hihi
Chào bạn lsls ks, cảm ơn bạn đã để lại đánh giá tốt nhé!! Mình sẽ cố gắng cung cấp thêm nhiều nội dung hữu ích hơn nữa trong tương lai. Xin cảm ơn bạn!!
Vì đây là bài giảng đặc biệt nhân dịp Tết nên mình đã thanh toán và xem ngay lập tức!! Mình thường xuyên theo dõi các bài giảng của người chia sẻ, và lần nào cũng vậy, nội dung đều rất tuyệt vời và chỉ tập trung vào những điểm cốt lõi!!
Mình nghĩ bài giảng lần này cũng rất thực tế, giúp người học tiếp thu được nhiều nội dung và xây dựng nền tảng vững chắc.
1. Phần lớn thời lượng là thực hành.
- Giảng viên giải thích đầy đủ lý thuyết, nhưng phần thực hành không hề thiếu hụt mà ngược lại, mình thấy phần thực hành còn nhiều hơn cả lý thuyết.
2. Nội dung ngắn gọn và mang tính thực tiễn cao.
- Không có nội dung rườm rà, mình đã học được các phương pháp và mô hình sử dụng trong thực tế.
3. Tập trung hoàn toàn vào Redis.
- Đây có thể vừa là nhược điểm vừa là ưu điểm, nhưng nếu bạn chỉ muốn học về dịch vụ Redis thì mình nghĩ không có bài giảng nào tốt hơn bài này.
Mình sẽ rất mong chờ các bài giảng tiếp theo. Cảm ơn bạn đã tạo ra một bài giảng chất lượng như vậy!!
Chào bạn wrana, cảm ơn bạn rất nhiều vì đã để lại đánh giá đầy tâm huyết!! Đúng như những gì bạn đã chia sẻ, tôi đã cố gắng tiếp cận vấn đề từ góc nhìn thực tế và sát với chuyên môn nhất có thể, vì vậy mong bạn sẽ tiếp tục quan tâm và ủng hộ trong thời gian tới.
Dù hơi muộn nhưng chúc bạn một năm mới an khang thịnh vượng và dồi dào sức khỏe!! Xin cảm ơn bạn!