Nguồn
System Design: Why is single-threaded Redis so fast?
Redis là gì?
Redis là một dạng cơ sở dữ liệu lưu trữ data trong bộ nhớ. Nó thường được sử dụng như là cache. Nó hỗ trợ nhiều dạng cấu trúc dữ liệu khác nhau, như string, hash, list, set và sorted set. Redis rất chắc chắn, dễ sử dụng và có tốc độ rất tốt. Các yếu tố này lý giải vì sao nó là một trong những loại cơ sở dữ liệu được yêu thích nhất, theo khảo sát thường niên trên Stack Overflow.
Cơ sở dữ liệu in-memory
Lý do đầu tiên mà Redis nhanh là vì nó là một cơ sở dữ liệu in-memory, tức là dùng RAM, chứ không phải ổ cứng.
Truy cập vào bộ nhớ nhanh hơn rất rất nhiều lần so với truy cập ngẫu nhiên trên đĩa. Việc truy cập vào bộ nhớ mang lại thông lượng đọc và ghi cao cùng với độ trễ thấp. Đổi lại thì dữ liệu không thể lớn hơn bộ nhớ.
Về mặt cài đặt, các cấu trúc dữ liệu trong bộ nhớ dễ cài đặt hơn nhiều so với cài trên đĩa. Điều này giúp code đơn giản và góp phần vào sự ổn định vững chắc của Redis.
Đơn luồng
Redis chủ yếu là đơn luồng. Vì sao một thiết kế đơn luồng lại cho ta hiệu suất cao như vậy? Tận dụng hết các core trong CPU với đa luồng không phải nhanh hơn sao?
Các ứng dụng đa luồng yêu cầu lock hoặc các cơ chế đồng bộ hoá khác. Chúng nổi tiếng là khó giải thích. Trong nhiều ứng dụng, thêm phức tạp chỉ tổ gây thêm lỗi và mất đi sự ổn định, gây khó khăn cho việc duy trì hiệu suất cao.
Trong trường hợp của Redis, code đơn luồng rất dễ hiểu. Nhưng mà làm thế nào để code đơn luồng này có thể xử lý hàng ngàn request và response cùng lúc? Luồng không bị block để xử lý từng request một à? Đây là lúc I/O multiplexing phát huy tác dụng. Với I/O multiplexing, hệ điều hành cho phép một luồng có thể đợi cùng lúc trên nhiều kết nối socket. Thông thường thì điều này được thực hiện bởi các system call như select
hay poll
. Các system call này không hiệu quả lắm khi có hàng ngàn kết nối.
Trên linux, epoll
là một biến thể hiệu quả của I/O multiplexing giúp hỗ trợ hàng ngàn kết nối cùng lúc. Một nhược điểm của thiết kế đơn luồng là nó không tận dụng được tất cả các core của CPU trong phần cứng ngày nay. Không hiếm các trường hợp có nhiều instance Redis chạy trên cùng một máy chủ để tận dụng nhiều core CPU hơn.
Các cấu trúc dữ liệu hiệu quả
Vì Redis là cơ sở dữ liệu in-memory, nó có thể tận dụng một số cấu trúc dữ liệu bậc thấp hiệu quả mà không phải lo lắng làm sao để lưu chúng vào đĩa một cách hiệu quả. Danh sách liên kết, skip list, hash table là một số ví dụ.
Kết
Ngày nay thì ta có thể thấy một số ứng dụng cài đặt tương thích với Redis để đạt được hiệu suất còn cao hơn nữa từ một máy chủ. Với tính dễ sử dụng, tính ổn định vững chắc và hiệu suất cao của Redis, nó vẫn cung cấp một giải pháp mạnh mẽ về mặt hiệu suất và độ ổn định cho thị trường.
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty