KIếN THứC WEBSITE › PERFORMANCE

Redis cache WordPress — 5 bước giảm 78% TTFB cho shop VN

Redis cache WordPress — 5 bước giảm 78% TTFB cho shop VN 2026

Redis là kho dữ liệu RAM dùng làm object cache cho WordPress — giảm truy vấn cơ sở dữ liệu và cải thiện thời gian phản hồi rõ rệt. Bài hướng dẫn 5 bước: cài đặt, cấu hình plugin, xác minh tỉ lệ hit, theo dõi và tinh chỉnh.

Redis cho WordPress — vì sao cần

Redis cache WordPress — Redis cho WordPress — vì sao cần
Redis cho WordPress — vì sao cần

WordPress mỗi yêu cầu thực thi 50-200 truy vấn cơ sở dữ liệu tùy số plugin. MySQL xử lý ở tốc độ mili giây, nhưng I/O tích lũy khiến TTFB kéo dài đến 800-2000ms với shop nhiều plugin.

Redis lưu kết quả truy vấn trong RAM — yêu cầu tiếp theo lấy từ Redis (~0,5ms) thay vì MySQL (5-50ms). Với 80-90% truy vấn là lặp lại, tác động rất rõ rệt.

3 chỉ số Redis cải thiện

  • Số truy vấn cơ sở dữ liệu/yêu cầu: giảm mạnh khi tỉ lệ cache hit đạt 85%+.
  • Thời gian phản hồi (TTFB): cải thiện đáng kể trên shop có 50+ plugin.
  • CPU máy chủ: tải MySQL giảm, server ổn định hơn khi traffic spike.

Redis object cache khác page cache như thế nào

Page cache lưu toàn bộ HTML trang vào file. Redis object cache lưu từng đối tượng WordPress (kết quả query, transient, option) vào RAM.

Hai cơ chế bổ sung nhau. Page cache phục vụ trang tĩnh cho khách chưa đăng nhập.

Redis xử lý trang động cho người dùng đã đăng nhập.

Bước 1 — Cài đặt Redis server

Bước 1 — Cài đặt Redis server
Sơ đồ minh hoạ — Bước 1 — Cài đặt Redis server

Redis chạy trên VPS hoặc dịch vụ managed. Cài local đơn giản với apt/yum; dịch vụ managed như Redis Cloud có gói miễn phí 30MB.

Cài đặt trên Ubuntu/Debian VPS

# SSH vào VPS
sudo apt update
sudo apt install redis-server -y

# Khởi động và bật tự động
sudo systemctl start redis-server
sudo systemctl enable redis-server

# Xác minh hoạt động
redis-cli ping
# Kết quả: PONG

Cấu hình Redis cho môi trường thật

# /etc/redis/redis.conf
maxmemory 256mb              # Giới hạn RAM
maxmemory-policy allkeys-lru # Xóa LRU khi đầy
bind 127.0.0.1               # Chỉ nội bộ, bảo mật
appendonly no                # Tắt ghi disk (cache không cần)
save ""                      # Tắt snapshot RDB

# Khởi động lại
sudo systemctl restart redis-server

Lựa chọn dịch vụ managed

  • Redis Cloud (Redis Inc): miễn phí 30MB, gói trả phí từ $5.
  • Upstash Redis: serverless, trả theo yêu cầu, $0,20/100k yêu cầu.
  • AWS ElastiCache: từ $13/tháng, tích hợp hạ tầng AWS.
  • DigitalOcean Managed Redis: từ $15/tháng, thiết lập đơn giản.

Bước 2 — Plugin Redis Object Cache

Bước 2 — Plugin Redis Object Cache
Bước 2 — Plugin Redis Object Cache

Plugin “Redis Object Cache” của Till Krüss là tiêu chuẩn thực tế cho WordPress + Redis — miễn phí, ổn định, hỗ trợ Redis 4+ và tích hợp WP_CACHE đúng chuẩn.

Các bước thiết lập plugin

  1. Vào Plugins → Add New → tìm “Redis Object Cache”.
  2. Cài đặt và kích hoạt plugin.
  3. Vào Settings → Redis → tab “Settings”.
  4. Xác minh hiển thị “Status: Connected” (plugin tự nhận diện Redis tại localhost:6379).
  5. Click “Enable Object Cache”.
  6. Xác minh wp-config.php có dòng define('WP_CACHE', true);.

Cấu hình Redis tùy chỉnh trong wp-config.php

// wp-config.php
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'your-redis-password');
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_PREFIX', 'shopcuaban_');  // Tránh xung đột multi-site

Kiểm tra sau khi bật

Sau khi kích hoạt, dùng plugin Query Monitor để xem số truy vấn cơ sở dữ liệu mỗi trang. Số lượng nên giảm rõ rệt so với trước khi bật Redis.

Nếu không thấy thay đổi, kiểm tra wp-config.php có đặt đúng WP_CACHE và object-cache.php được sao chép vào wp-content/.

Bước 3 — Xác minh tỉ lệ cache hit

Sau khi bật, theo dõi tỉ lệ cache hit qua giao diện plugin hoặc redis-cli. Tỉ lệ hit trên 85% là tốt — nếu dưới 70% cần kiểm tra cấu hình.

Xác minh qua giao diện plugin

  • Settings → Redis → tab “Metrics”.
  • Tỉ lệ hits/misses theo thời gian thực.
  • Bộ nhớ đã dùng / tối đa.
  • Thời gian hoạt động và số kết nối đang mở.

Xác minh qua redis-cli

# SSH vào VPS, chạy redis-cli
redis-cli INFO stats

# Thông tin liên quan:
# keyspace_hits:1100000
# keyspace_misses:134567

# Tỉ lệ hit = hits / (hits + misses)
# Ví dụ: 1100000 / 1234567 = 89%

Khi nào tỉ lệ hit thấp

Tỉ lệ hit dưới 70% thường do Redis đầy bộ nhớ, TTL quá ngắn, hoặc plugin tạo nhiều cache key không tái sử dụng.

Tăng maxmemory hoặc kiểm tra plugin nào tạo nhiều transient không cần thiết qua tab “Metrics” của plugin.

Bước 3-4 — Xác minh và theo dõi

Thiết lập cảnh báo khi Redis gặp sự cố, hết bộ nhớ, hoặc tỉ lệ hit giảm đột ngột. Tinh chỉnh chính sách xóa bộ nhớ theo mẫu sử dụng thực tế.

Chỉ số cần theo dõi

  • Bộ nhớ dùng / tối đa: trên 90% → cần tăng maxmemory hoặc rút ngắn TTL cache.
  • Tỉ lệ hit: dưới 70% → kiểm tra lại mẫu tạo cache key.
  • Số kết nối: tăng đột biến → traffic spike hoặc plugin bị lặp vô hạn.
  • Số key bị xóa: lớn hơn 0 → LRU đang xóa, có thể cần thêm bộ nhớ.

Chính sách xóa bộ nhớ

Chính sách Hành vi Dùng khi nào
noeviction Từ chối ghi khi đầy Dữ liệu quan trọng không được mất
allkeys-lru Xóa key ít dùng nhất gần đây Cache chung (khuyến nghị)
allkeys-lfu Xóa key ít truy cập nhất Mẫu key hot ổn định
volatile-lru Xóa LRU chỉ key có TTL Kết hợp cache và dữ liệu thường trú

Kết hợp Redis với Cloudflare CDN

Redis xử lý cache phía máy chủ — giảm tải cơ sở dữ liệu cho trang động (người dùng đã đăng nhập). Cloudflare CDN xử lý cache tại edge — phục vụ tài nguyên tĩnh và HTML tĩnh cho người dùng chưa đăng nhập.

Hai lớp cache bổ sung cho nhau. Xem thêm hướng dẫn Cloudflare cho WordPress để thiết lập đầy đủ cả hai lớp.

Checklist triển khai Redis cho shop WordPress

  1. Xác nhận VPS có RAM đủ (tối thiểu 1GB RAM, dành 256MB cho Redis).
  2. Cài Redis server, cấu hình maxmemory và chính sách allkeys-lru.
  3. Cài plugin “Redis Object Cache”, kích hoạt và xác minh “Status: Connected”.
  4. Thêm WP_REDIS_PREFIX trong wp-config.php để tránh xung đột.
  5. Kiểm tra tỉ lệ hit qua tab “Metrics” — mục tiêu trên 85%.
  6. Cài Query Monitor để so sánh số truy vấn cơ sở dữ liệu trước/sau.
  7. Thiết lập cảnh báo khi Redis down (UptimeRobot hoặc tương đương).
  8. Nếu dùng WP Rocket, vô hiệu hóa “Object Cache” trong WP Rocket (để Redis xử lý).
  9. Multi-site: đặt WP_REDIS_PREFIX khác nhau cho từng site.
  10. Kiểm tra TTFB trước và sau — ghi lại để so sánh.

Redis và chỉ số TTFB

TTFB là thời gian từ lúc trình duyệt gửi yêu cầu đến khi nhận byte đầu tiên từ máy chủ. Redis giảm TTFB bằng cách rút ngắn thời gian WordPress xử lý mỗi yêu cầu.

Đọc thêm tại TTFB — phân tích chuyên sâu và cách Redis ảnh hưởng đến LCP qua TTFB.

Bài liên quan

Câu hỏi thường gặp

Redis hay Memcached — chọn cái nào?

Redis phù hợp hơn cho WordPress: hỗ trợ cấu trúc dữ liệu phong phú (hash, list, set), có tùy chọn persistence, replication và pub/sub. Plugin “Redis Object Cache” là tiêu chuẩn thực tế — không có plugin Memcached tương đương ở mức độ trưởng thành.

Memcached đơn giản hơn và đôi khi nhanh hơn trong trường hợp rất đặc thù, nhưng với WordPress thì Redis là lựa chọn mặc định.

Hosting chia sẻ không có Redis — làm gì?

Có 4 lựa chọn:

  • Nâng lên VPS từ $5/tháng.
  • Redis Cloud miễn phí 30MB.
  • Upstash Redis serverless.
  • Plugin cache file-based (W3 Total Cache, Cache Enabler) — ít hiệu quả hơn nhưng hoạt động được trên hosting chia sẻ.

Với shop WooCommerce nghiêm túc, nên chuyển sang VPS sớm. Hosting chia sẻ giới hạn quá nhiều cho shop có traffic thực sự.

Redis crash, site có bị down không?

Không. Plugin “Redis Object Cache” xử lý gracefully — nếu Redis không phản hồi, WordPress tự động fallback về MySQL.

Site vẫn hoạt động, chỉ chậm hơn bình thường.

Cần thiết lập cảnh báo khi Redis down để sửa kịp thời. Hầu hết các dịch vụ monitoring miễn phí (UptimeRobot) hỗ trợ kiểm tra TCP port cho Redis.

Multi-site WordPress dùng Redis chung được không?

Được. Set WP_REDIS_PREFIX khác nhau cho từng site để phân vùng key, tránh xung đột.

Hoặc dùng WP_REDIS_DATABASE khác nhau (Redis có 16 cơ sở dữ liệu mặc định, 0-15).

Cần theo dõi tổng bộ nhớ Redis khi nhiều site dùng chung. Mỗi site tạo cache key riêng — tổng có thể lớn hơn dự kiến.

WP Rocket có tương thích với Redis Object Cache không?

Tương thích. Tắt “Object Cache” trong WP Rocket, để Redis xử lý phần đó.

WP Rocket lo page cache (HTML tĩnh cho khách chưa đăng nhập), Redis lo object cache (truy vấn DB cho người dùng đã đăng nhập). Hai lớp không xung đột.

Cần tư vấn về cấu trúc cache tối ưu cho shop WordPress đang hoạt động? Web22 tư vấn audit tối ưu Core Web Vitals bao gồm đánh giá toàn bộ chuỗi cache từ Redis đến CDN edge.