Cài Redis Cache Trên VPS TrumVPS - Tăng Tốc Website 10X, Giảm 90% Tải MySQL

📅 28/05/2026 · ⏱ 13 phút đọc · 🏷 Hướng Dẫn · VPS

1. Redis Là Gì Và Tại Sao Bạn Cần Nó?

Redis (Remote Dictionary Server) là một in-memory data store mã nguồn mở, hoạt động như một database, cache, và message broker. Điểm đặc biệt của Redis là lưu toàn bộ dữ liệu trên RAM thay vì ổ cứng, giúp tốc độ đọc/ghi nhanh hơn MySQL hàng trăm lần.

Khi website của bạn có lượng truy cập lớn, mỗi request đều phải query database để lấy dữ liệu — điều này tạo ra "nút thắt cổ chai" khổng lồ. Redis giải quyết vấn đề này bằng cách lưu cache các query phổ biến vào RAM, để lần sau không cần đụng đến MySQL nữa.

💡 Bạn có biết? Redis có thể xử lý hơn 100,000 thao tác mỗi giây trên một VPS tầm trung. So với MySQL chỉ xử lý được vài trăm query/giây, đây là một bước nhảy vọt về hiệu năng.

2. Redis vs Memcached — Chọn Cái Nào?

Cả Redis và Memcached đều là in-memory cache phổ biến, nhưng chúng có những khác biệt quan trọng. Dưới đây là bảng so sánh chi tiết để bạn đưa ra quyết định đúng đắn:

Tiêu ChíRedisMemcached
Tốc độCực nhanh (sub-millisecond)Cực nhanh (sub-millisecond)
Kiểu dữ liệuStrings, Hashes, Lists, Sets, Sorted Sets, Streams, GeospatialChỉ Strings
PersistentCó (RDB + AOF)Không
ReplicationMaster-Slave, ClusterKhông hỗ trợ
Pub/SubKhông
Lua ScriptingCó (EVAL)Không
WordPress hỗ trợPlugin chuyên biệt (Redis Object Cache)Có nhưng ít plugin hơn
Bộ nhớ tối đaLên đến hàng TB (cluster)Giới hạn bởi RAM vật lý
Eviction policy8 chính sách (LRU, LFU, TTL...)Chỉ LRU

Kết luận: Nếu bạn chỉ cần cache key-value đơn giản, Memcached là lựa chọn nhẹ nhàng. Nhưng nếu bạn muốn object cache cho WordPress, lưu session, làm queue, hay cần tính năng nâng cao — Redis là vua. Và trong bài này, chúng ta sẽ dùng Redis.

3. Yêu Cầu Hệ Thống Trước Khi Cài Redis

Trước khi bắt tay vào cài đặt, hãy đảm bảo VPS của bạn đáp ứng các yêu cầu sau:

Nếu bạn chưa có VPS, tham khảo ngay TrumVPS — VPS giá rẻ từ 40K/tháng đủ sức chạy Redis + WordPress mượt mà.

4. 8 Bước Cài Redis Trên Ubuntu 22.04

Làm theo từng bước dưới đây. Mỗi lệnh đều được giải thích rõ ràng để bạn hiểu mình đang làm gì.

Bước 1: Cập nhật hệ thống

sudo apt update && sudo apt upgrade -y

Luôn bắt đầu với việc cập nhật package index và nâng cấp các gói hiện có lên phiên bản mới nhất.

Bước 2: Cài Redis từ repository chính thức

sudo apt install redis-server -y

Ubuntu 22.04 có sẵn Redis 6.x trong repo chính thức. Nếu bạn muốn Redis 7.x (có nhiều cải tiến về hiệu năng), làm thêm bước sau:

# Thêm Redis repository chính thức cho phiên bản mới nhất
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install redis-server -y

Bước 3: Cấu hình Redis cơ bản

sudo nano /etc/redis/redis.conf

Tìm và sửa các dòng sau:

# Cho phép Redis giám sát trên localhost (mặc định)
bind 127.0.0.1

# Bật chế độ bảo vệ
protected-mode yes

# Đặt max memory (điều chỉnh theo RAM VPS của bạn)
# Ví dụ: VPS 2GB RAM thì để 256MB cho Redis
maxmemory 256mb

# Chính sách xóa cache khi đầy bộ nhớ
maxmemory-policy allkeys-lru

Giải thích maxmemory-policy: allkeys-lru nghĩa là khi Redis đầy RAM, nó sẽ tự động xóa những key ít được truy cập nhất (Least Recently Used) để nhường chỗ cho dữ liệu mới. Đây là setting lý tưởng cho object cache.

Bước 4: Khởi động và enable Redis

sudo systemctl start redis-server
sudo systemctl enable redis-server
sudo systemctl status redis-server

Dòng cuối cùng giúp bạn kiểm tra Redis đã chạy chưa. Bạn sẽ thấy active (running) màu xanh.

Bước 5: Kiểm tra Redis hoạt động

redis-cli ping

Nếu Redis trả về PONG, mọi thứ đã sẵn sàng! Thử thêm vài lệnh cơ bản:

redis-cli
127.0.0.1:6379> SET test "Xin chào Redis!"
127.0.0.1:6379> GET test
127.0.0.1:6379> INFO stats
127.0.0.1:6379> exit

Bước 6: Cài Redis PHP extension

sudo apt install php-redis -y
# Nếu dùng PHP 8.x riêng
sudo apt install php8.1-redis -y  # thay 8.1 bằng phiên bản PHP của bạn

# Kiểm tra extension đã load
php -m | grep redis

Bước 7: Restart PHP-FPM và Nginx/Apache

sudo systemctl restart php8.1-fpm   # với Nginx
sudo systemctl restart nginx
# Hoặc với Apache:
# sudo systemctl restart apache2

Bước 8: Xác nhận Redis đang được PHP sử dụng

Tạo file info.php tạm thời để kiểm tra:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Truy cập http://your-server-ip/info.php, tìm "redis" — nếu thấy section Redis là thành công. Nhớ xóa file info.php sau khi kiểm tra!

5. Cấu Hình Redis Cho WordPress

WordPress không dùng Redis mặc định. Bạn cần một plugin để kết nối chúng. Plugin tốt nhất hiện nay là Redis Object Cache:

  1. Vào Dashboard WordPress → Plugins → Add New
  2. Tìm "Redis Object Cache" (tác giả: Till Krüss)
  3. Cài đặt và kích hoạt
  4. Vào Settings → Redis
  5. Nhấn "Enable Object Cache"

Sau khi bật, plugin sẽ tự động xác định Redis server trên localhost. Bạn sẽ thấy màn hình status với các metrics như hit rate, memory usage, và số key đang lưu.

⚡ Mẹo nhỏ: Nếu Redis chạy trên port hoặc host khác, thêm dòng sau vào wp-config.php:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'your-password-if-set');
define('WP_REDIS_DATABASE', 0); // 0-15

6. Cấu Hình Redis Cho PHP App Thuần (Không WordPress)

Nếu bạn chạy Laravel, Symfony, CodeIgniter hoặc PHP app custom, cách dùng Redis cũng rất đơn giản:

Ví dụ với PHP thuần:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Lưu cache với TTL 3600 giây (1 giờ)
$cacheKey = 'popular_posts';
$cachedData = $redis->get($cacheKey);

if ($cachedData === false) {
    // Không có cache, query database
    $cachedData = getPopularPostsFromDB();
    $redis->setex($cacheKey, 3600, serialize($cachedData));
}

$posts = unserialize($cachedData);
?>

Ví dụ với Laravel:

// .env
REDIS_CLIENT=predis
CACHE_DRIVER=redis

// Trong controller
$posts = Cache::remember('popular_posts', 3600, function () {
    return Post::orderBy('views', 'desc')->take(10)->get();
});

7. Benchmark: Trước Và Sau Khi Có Redis

Dưới đây là kết quả benchmark thực tế trên VPS TrumVPS 2GB RAM, chạy WordPress + WooCommerce với ~50 sản phẩm:

Chỉ SốKhông Có RedisCó RedisCải Thiện
Thời gian tải trang (TTFB)1,200ms180ms↓ 85%
Số query MySQL/request85 queries12 queries↓ 86%
CPU load trung bình2.80.6↓ 79%
Request/second (wrk -t4 -c100)42 req/s385 req/s↑ 817%
PageSpeed Score (Mobile)5491↑ 68%
Redis Hit RateN/A94.2%
RAM sử dụng thêm128MB

Con số biết nói: tốc độ tăng gần 10 lần, số query MySQL giảm gần 90%, và điểm PageSpeed nhảy từ 54 lên 91. Tất cả chỉ với 128MB RAM cho Redis.

8. Tối Ưu Redis Config Cho Hiệu Năng Cao Nhất

Đừng dừng lại ở cài đặt mặc định. Dưới đây là những tinh chỉnh giúp Redis chạy "bốc" hơn nữa:

Tắt THP (Transparent Huge Pages)

Redis khuyến cáo tắt THP vì nó gây latency spike:

sudo nano /etc/systemd/system/disable-thp.service

Dán nội dung sau:

[Unit]
Description=Disable Transparent Huge Pages (THP)
After=network.target

[Service]
Type=simple
ExecStart=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"
ExecStop=

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable disable-thp
sudo systemctl start disable-thp

Tăng vm.overcommit_memory

sudo sysctl vm.overcommit_memory=1
echo "vm.overcommit_memory=1" | sudo tee -a /etc/sysctl.conf

Bật lazyfree cho eviction mượt hơn

# Thêm vào redis.conf
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes

Theo dõi Redis với redis-cli

redis-cli INFO stats       # Xem thống kê hit/miss
redis-cli INFO memory      # Xem bộ nhớ sử dụng
redis-cli INFO clients     # Xem số client kết nối
redis-cli SLOWLOG GET 10   # Xem 10 query chậm nhất

9. Các Lỗi Thường Gặp Và Cách Fix

Lỗi: "Connection refused"

Redis chưa chạy hoặc bind sai IP. Kiểm tra:

sudo systemctl status redis-server
sudo netstat -tlnp | grep 6379

Lỗi: "OOM command not allowed when used memory > 'maxmemory'"

Redis đã đầy RAM. Tăng maxmemory trong redis.conf hoặc chuyển sang VPS nhiều RAM hơn. Với site lớn, cân nhắc nâng cấp lên gói VPS 4GB tại TrumVPS.

Lỗi: Redis Object Cache plugin không kết nối được

Kiểm tra extension PHP Redis đã cài chưa: php -m | grep redis. Nếu chưa có, quay lại Bước 6 ở trên.

10. Khi Nào Nên Nâng Cấp Lên Redis Cluster?

Với site dưới 100K visitors/tháng, một instance Redis đơn là quá đủ. Nhưng khi bạn cần:

Thì Redis Sentinel hoặc Redis Cluster là bước tiếp theo. Nếu bạn cần tư vấn nâng cấp, tham khảo thêm bài tối ưu WordPress trên VPS để có cái nhìn tổng quan hơn.

11. Kết Luận

Redis là một trong những công cụ đơn giản nhưng hiệu quả nhất để tăng tốc website. Chỉ với 15-20 phút cài đặt và 128MB RAM, bạn có thể giảm 90% tải MySQL và tăng tốc website lên gấp 10 lần. Đây không phải là "nice to have" — với bất kỳ website WordPress hay PHP nào có traffic, Redis là bắt buộc.

Quan trọng nhất: hãy chọn VPS đủ RAM để Redis hoạt động hiệu quả. VPS 1GB RAM có thể chạy được nhưng sẽ nhanh đầy. Mình khuyên dùng ít nhất 2GB RAM để thoải mái cho cả web server + MySQL + Redis.

🚀 Sẵn sàng tăng tốc website của bạn? Thuê ngay VPS TrumVPS giá rẻ, cấu hình sẵn sàng cho Redis — chỉ từ 40K/tháng!

Thuê VPS TrumVPS Ngay