Tóm tắt nhanh
- Redis Object Cache lưu kết quả truy vấn cơ sở dữ liệu vào bộ nhớ RAM, giúp giảm 60-80% số lần truy vấn database
- Hiệu quả đặc biệt cao với wp-admin, người dùng đã đăng nhập và WooCommerce — những khu vực không thể sử dụng page cache
- Không nên cài Redis khi chưa dọn dẹp cơ sở dữ liệu — việc cache dữ liệu rác chỉ khiến hệ thống nhanh chóng đầy rác hơn
- Tỷ lệ cache hit dưới 80% cho thấy Redis chưa phát huy hiệu quả, cần kiểm tra và khắc phục nguyên nhân
- So với Memcached: Redis linh hoạt hơn, trong khi Memcached có thể nhanh hơn về mặt thông lượng thô

Object Cache là gì và tại sao WordPress cần?
Object Cache là cơ chế lưu trữ tạm thời kết quả truy vấn cơ sở dữ liệu vào bộ nhớ RAM, giúp WordPress không phải truy vấn lại database mỗi khi cần cùng một dữ liệu — từ đó giảm đáng kể thời gian phản hồi.
Bạn có biết một trang WordPress thông thường có thể thực hiện từ 30-100 truy vấn cơ sở dữ liệu chỉ trong một lần tải trang? Mỗi lần tải, WordPress phải lấy nội dung bài viết, tải cài đặt plugin từ bảng wp_options, lấy thông tin người dùng, kiểm tra quyền truy cập, tải cấu hình widget và đọc thiết lập giao diện.
Không có object cache, mọi truy vấn đều phải “chạm” trực tiếp vào MySQL/MariaDB. Cơ sở dữ liệu xử lý truy vấn, trả kết quả, rồi WordPress sử dụng. Lần tải tiếp theo — lại thực hiện đúng những truy vấn đó và nhận đúng dữ liệu đó.
Khi sử dụng Redis làm object cache, quy trình thay đổi hoàn toàn:
- WordPress cần dữ liệu (ví dụ:
get_option('siteurl')) - WordPress kiểm tra trong Redis trước
- Nếu Redis có dữ liệu (cache hit) → trả về ngay từ bộ nhớ RAM, không cần truy vấn database
- Nếu Redis không có (cache miss) → truy vấn database, lấy kết quả, lưu vào Redis rồi trả về
- Lần sau cần cùng dữ liệu → đã có sẵn trong Redis
Một truy vấn database thường mất từ 1-50ms tùy độ phức tạp. Trong khi đó, Redis chỉ mất 0.1-0.5ms để tra cứu. Trên một trang có 80 truy vấn, nếu 70 truy vấn hit Redis thay vì database, bạn có thể tiết kiệm từ 70-3.500ms thời gian truy vấn database mỗi lần tải trang.
Bạn đang đọc bài viết thuộc chuyên mục Tăng tốc website của VietnamTutor — nơi chia sẻ các phương pháp tối ưu hiệu năng website thực tế từ những dự án đã triển khai.

Redis hoạt động như thế nào với WordPress?
Redis là máy chủ lưu trữ cấu trúc dữ liệu trong bộ nhớ RAM — lưu dữ liệu trong RAM thay vì ổ cứng, mang lại tốc độ truy xuất cực nhanh. WordPress kết nối với Redis thông qua Object Cache API có sẵn.
WordPress có sẵn Object Cache API: wp_cache_set(), wp_cache_get(), wp_cache_delete(). Mặc định, cache này chỉ tồn tại trong một request — khi request kết thúc, cache sẽ bị xóa.
Persistent object cache (Redis hoặc Memcached) thay thế cơ chế mặc định bằng một kho lưu trữ bên ngoài có thể tồn tại qua nhiều request. Khi cài file drop-in object-cache.php, các hàm wp_cache_get() sẽ đọc dữ liệu từ Redis thay vì phải xây dựng lại từ MySQL mỗi lần.
Kết quả thực tế: một trang WordPress thường giảm từ 50-100 truy vấn database xuống còn 5-10 truy vấn. Thời gian phản hồi có thể cải thiện 40-60%.
Những trường hợp Redis phát huy hiệu quả
- wp-admin: Bảng quản trị không thể dùng page cache — mỗi lần tải đều phải truy vấn database. Redis giúp cache cài đặt plugin, tùy chọn người dùng và dữ liệu dashboard, khiến wp-admin mượt mà hơn rõ rệt.
- Người dùng đã đăng nhập: Page cache thường không phục vụ trang đã cache cho người dùng đăng nhập (vì nội dung có thể được cá nhân hóa). Redis giúp cache các truy vấn database mà những trang này sinh ra.
- WooCommerce: Các trang giỏ hàng, thanh toán, tài khoản cá nhân không thể dùng page cache vì chứa dữ liệu theo phiên. Redis giúp cache dữ liệu sản phẩm, cài đặt và các truy vấn cấu hình.
- REST API: Nếu website phục vụ các yêu cầu API (WordPress headless, backend cho ứng dụng di động, theme dùng nhiều AJAX), mỗi request đều chạm database. Redis giúp giảm tải truy vấn database cho từng request.
Những trường hợp Redis không giúp được
- Khách truy cập ẩn danh trên trang đã dùng page cache: Nếu WP Rocket hoặc plugin page cache khác đang phục vụ HTML đã cache, WordPress sẽ không chạy PHP, không truy vấn database và cũng không dùng object cache. Lúc này Redis không mang lại lợi ích.
- Tài nguyên tĩnh: Ảnh, file CSS, JavaScript, font — máy chủ web phục vụ trực tiếp, Redis không liên quan.
- Truy vấn chậm do thiếu index: Nếu một truy vấn mất 2 giây vì bảng wp_postmeta thiếu index trên cột meta_value, Redis chỉ cache kết quả sau lần chạy chậm đầu tiên. Lần đầu tiên (và mỗi lần cache miss sau khi dữ liệu bị xóa) vẫn mất 2 giây. Hãy tối ưu truy vấn thay vì chỉ che đậy bằng cache.
Khi nào nên và không nên dùng Redis?
NÊN dùng Redis khi
- Website có nhiều người dùng đã đăng nhập (membership, LMS, cộng đồng)
- Chạy WooCommerce với lưu lượng truy cập cao
- wp-admin chậm khi quản lý nhiều sản phẩm hoặc bài viết
- Sử dụng headless WordPress hoặc theme dùng nhiều AJAX
- Đã dọn dẹp sạch cơ sở dữ liệu và đã có page cache
KHÔNG NÊN dùng Redis khi
- Dữ liệu autoload trong bảng wp_options vượt quá 2MB: Redis sẽ cache cả dữ liệu rác, làm vấn đề trở nên nghiêm trọng hơn thay vì giải quyết.
- Lưu lượng truy cập chủ yếu từ khách ẩn danh: Page cache đã xử lý phần lớn, Redis chỉ hỗ trợ 5-10% request còn lại — hiệu quả mang lại không đáng kể.
- Tỷ lệ cache hit dưới 60%: Redis tiêu tốn thêm bộ nhớ và CPU nhưng không bù đắp được bằng lượng truy vấn database tiết kiệm được.
- Chưa dọn dẹp cơ sở dữ liệu: Cache dữ liệu bẩn chỉ tạo ra “dữ liệu bẩn nhanh hơn”, không phải cách khắc phục triệt để.
Mình khuyên bạn: hãy dọn dẹp cơ sở dữ liệu sạch sẽ trước khi cài Redis. Đây là bước quan trọng mà nhiều người bỏ qua, dẫn đến tình trạng cache phình to và cảm giác cải thiện giả tạo.
Các câu hỏi thường gặp
Redis có thay thế được page cache (WP Rocket) không?
Không. Redis (object cache) và page cache phục vụ hai mục đích khác nhau. Page cache lưu toàn bộ HTML đầu ra — khách ẩn danh nhận HTML đã cache mà không cần chạy PHP. Redis lưu kết quả truy vấn cơ sở dữ liệu — giúp người dùng đã đăng nhập, wp-admin và WooCommerce tải nhanh hơn. Hai công nghệ bổ trợ cho nhau chứ không thay thế.
Shared hosting có cài được Redis không?
Hầu hết các gói shared hosting không hỗ trợ cài Redis server vì yêu cầu quyền truy cập hệ thống. Một số dịch vụ managed WordPress hosting như Kinsta, Cloudways, WP Engine hỗ trợ Redis sẵn. Nếu đang dùng shared hosting, bạn cần nâng cấp lên VPS hoặc managed hosting có hỗ trợ Redis.
Redis sử dụng bao nhiêu RAM?
Tùy quy mô website: blog nhỏ thường cần 64MB, website trung bình cần 128-256MB, WooCommerce cần 256-512MB, website lớn hoặc multisite có thể cần 512MB-1GB. Quan trọng là đặt giới hạn maxmemory và sử dụng chính sách allkeys-lru để Redis tự động dọn dẹp khi bộ nhớ đầy.
Làm sao biết Redis đang hoạt động tốt?
Kiểm tra tỷ lệ cache hit qua lệnh redis-cli: trên 80% là mức tốt. Sử dụng plugin Query Monitor trong WordPress để xem các lần gọi cache hit hay miss. Trong wp-admin, vào Settings → Redis, trạng thái phải hiển thị Connected (màu xanh). Thời gian tải wp-admin và các trang dành cho người dùng đăng nhập phải cải thiện rõ rệt sau khi kích hoạt Redis.
Nên dùng Redis hay Memcached cho WordPress?
Với hầu hết các website WordPress, Redis là lựa chọn tốt hơn nhờ hỗ trợ nhiều kiểu dữ liệu, có cơ chế lưu trữ bền vững (cache vẫn tồn tại sau khi restart), hỗ trợ sao chép dữ liệu và công cụ giám sát tốt hơn. Chỉ chọn Memcached khi cần caching phân tán trên nhiều máy chủ hoặc hosting chỉ hỗ trợ Memcached. Theo benchmark thực tế, sự khác biệt về hiệu năng giữa hai giải pháp không lớn.
