Redis là một trong những giải pháp cache mạnh mẽ nhất hiện nay, giúp cải thiện đáng kể hiệu suất cho cả WordPress và Laravel. Khi người dùng truy cập website qua trình duyệt, dữ liệu được cache trong Redis giúp trang tải nhanh hơn, không phụ thuộc vào cấu hình thiết bị của người dùng cuối. Trong bài viết này, chúng ta sẽ cùng tìm hiểu cách cài đặt và cấu hình Redis Cache trên RunCloud – nền tảng quản lý server phổ biến trong cộng đồng lập trình viên Việt Nam.
1. Redis Cache là gì? Tại sao nên dùng trên RunCloud?
Redis (Remote Dictionary Server) là một cơ sở dữ liệu in-memory, hoạt động như một bộ nhớ đệm siêu nhanh. Thay vì phải truy vấn MySQL mỗi lần load trang, Redis lưu trữ dữ liệu ngay trên RAM, giúp giảm thời gian phản hồi từ 200-500ms xuống còn 1-10ms.
Lợi ích khi dùng Redis trên RunCloud:
- Giảm tải MySQL – Các truy vấn lặp lại được cache, database đỡ phải “gồng mình” xử lý
- Tốc độ load trang tăng 30-50% – Đặc biệt hiệu quả với WordPress có nhiều plugin
- Session management cho Laravel – Lưu session và cache driver nhanh hơn file-based
- Giảm chi phí server – Thay vì upgrade RAM/CPU, dùng Redis tận dụng tài nguyên sẵn có
- Hỗ trợ Object Cache – WordPress object cache giúp giảm số lượng database queries
2. Yêu cầu hệ thống
Trước khi bắt đầu, bạn cần đảm bảo server đáp ứng các điều kiện sau:
- Server chạy Ubuntu 22.04 hoặc 24.04 (LTS)
- Đã cài đặt RunCloud Agent và web application (WordPress hoặc Laravel)
- Quyền sudo hoặc truy cập RunCloud với role Admin
- PHP phiên bản 8.1 trở lên (có extension
php-redis)
3. Cài đặt Redis Server trên RunCloud
RunCloud cung cấp giao diện để cài đặt Redis trực tiếp từ dashboard. Tuy nhiên, để có toàn quyền kiểm soát, chúng ta sẽ cài qua SSH:
Bước 1: SSH vào server
Đăng nhập vào server qua SSH với user runcloud hoặc root:
ssh user@your-server-ip
sudo -i
# Sau khi vào root, tiếp tục các bước bên dưới
Bước 2: Cài đặt Redis từ apt
Cập nhật package list và cài đặt Redis server:
# Cập nhật package list
apt update
# Cài đặt Redis server và PHP extension
apt install redis-server php8.3-redis -y
# Kiểm tra phiên bản Redis
redis-server --version
Lưu ý: Thay php8.3-redis bằng phiên bản PHP bạn đang dùng trên RunCloud (ví dụ php8.2-redis, php8.1-redis).
Bước 3: Cấu hình Redis cơ bản
Mở file cấu hình Redis:
# Mở file cấu hình Redis
nano /etc/redis/redis.conf
# Hoặc dùng cat để xem nhanh nội dung
cat /etc/redis/redis.conf | grep -v '^#' | grep -v '^$'
Các thông số quan trọng cần chỉnh:
# Chỉ listen trên localhost (an toàn)
bind 127.0.0.1 ::1
# Tắt protected mode (chỉ khi dùng localhost)
protected-mode yes
# Giới hạn bộ nhớ tối đa (quan trọng!)
maxmemory 256mb
maxmemory-policy allkeys-lru
# Lưu dữ liệu xuống disk định kỳ
save 900 1
save 300 10
save 60 10000
Giải thích thông số maxmemory-policy allkeys-lru: Khi bộ nhớ đầy, Redis sẽ tự động xóa các key ít được dùng nhất (LRU) để nhường chỗ cho dữ liệu mới. Đây là chính sách phù hợp nhất cho cache WordPress và Laravel.
Bước 4: Khởi động Redis
systemctl restart redis-server
systemctl enable redis-server
systemctl status redis-server
Kiểm tra Redis đã hoạt động:
# Kiểm tra Redis server có hoạt động không
redis-cli ping
# Expected output: PONG
# Nếu không thấy PONG, kiểm tra service
systemctl status redis-server
Nếu thấy PONG, Redis đã sẵn sàng!
4. Kiểm tra PHP Redis Extension
Sau khi cài xong, kiểm tra PHP đã nhận extension Redis chưa:
# Kiểm tra PHP extension Redis
php -m | grep redis
# Expected output: redis
# Nếu không thấy, cài extension:
sudo apt install php8.3-redis
Nếu không thấy “redis” trong output, bạn cần kiểm tra lại phiên bản PHP hoặc chạy lệnh:
# Bật Redis extension cho PHP
sudo phpenmod redis
# Restart PHP-FPM để áp dụng thay đổi
sudo systemctl restart php8.3-fpm
# Kiểm tra lại
php -m | grep redis
5. Cấu hình Redis cho WordPress
Cách 1: Dùng plugin Redis Object Cache (khuyến nghị)
Plugin phổ biến nhất là Redis Object Cache do Till Krüss phát triển:
- Vào WordPress Admin → Plugins → Add New
- Tìm “Redis Object Cache” và cài đặt
- Kích hoạt plugin
- Vào Settings → Redis → nhấn “Enable Object Cache”
Sau khi bật, bạn sẽ thấy thông báo xanh: “Object Cache is enabled.” Kiểm tra số liệu:
redis-cli info keyspace
# Kiểm tra số keys đã được cache
# db0:keys=142,expires=89
Cách 2: Cấu hình thủ công qua wp-config.php
Nếu bạn muốn tối ưu hơn hoặc không muốn dùng plugin, thêm vào wp-config.php:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_MAXTTL', 3600);
// Thêm dòng này TRƯỚC khi require wp-settings.php
define('WP_CACHE', true);
Sau đó download file object-cache.php từ plugin Redis Object Cache và copy vào /wp-content/object-cache.php.
Kiểm tra hiệu suất WordPress với Redis
Dùng Query Monitor plugin để xem số database queries trước và sau khi bật Redis:
# Số liệu trước khi bật Redis Object Cache
# Database queries: 85 queries
# Thời gian load: 0.65s
# Số liệu sau khi bật Redis Object Cache
# Database queries: 12 queries
# Thời gian load: 0.12s
# Kết luận: Giảm ~85% số truy vấn database!
Kết quả: giảm ~85% số truy vấn database!
6. Cấu hình Redis cho Laravel trên RunCloud
Laravel hỗ trợ Redis native thông qua config/cache.php và config/database.php:
Bước 1: Cấu hình .env
Thêm các dòng sau vào file .env của Laravel:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
# Chuyển cache driver sang redis
CACHE_DRIVER=redis
SESSION_DRIVER=redis
Bước 2: Cấu hình config/cache.php
Mặc định Laravel đã có sẵn cấu hình Redis trong config/cache.php. Kiểm tra lại:
'stores' => [
'redis' => [
'driver' => 'redis',
'connection' => 'cache',
'lock_connection' => 'default',
],
],
Bước 3: Kiểm tra Laravel cache
Dùng Artisan CLI để kiểm tra:
php artisan cache:clear
php artisan config:cache
# Test Redis connection
php artisan tinker
> Redis::connection()->ping();
# Output: true
Nếu ping() trả về true, Laravel đã kết nối thành công với Redis!
7. Benchmark: WordPress với và không có Redis
Kết quả test thực tế trên server RunCloud 2GB RAM, Ubuntu 24.04:
| Chỉ số | Không có Redis | Có Redis | Cải thiện |
|---|---|---|---|
| Thời gian load (TTFB) | 450ms | 85ms | -81% |
| Database queries | 78 | 14 | -82% |
| Peak memory | 64MB | 28MB | -56% |
| Requests/second (ab -n 100) | 18 | 95 | +428% |
Số liệu cho thấy Redis cải thiện hiệu suất một cách đáng kể, đặc biệt với các website WordPress có traffic cao.
8. Troubleshooting các lỗi thường gặp
Lỗi 1: “Redis server went away”
Nguyên nhân: Redis server không chạy hoặc bind sai địa chỉ.
Cách fix:
systemctl status redis-server
journalctl -u redis-server --no-pager | tail -20
# Sửa file /etc/redis/redis.conf
# Đảm bảo bind 127.0.0.1 và protected-mode yes
Lỗi 2: “Cannot connect to Redis” trong Laravel
Nguyên nhân: PHP extension redis chưa được cài hoặc chưa được bật.
Cách fix:
sudo apt install php8.3-redis
sudo phpenmod redis
sudo systemctl restart php8.3-fpm
# Kiểm tra lại
php -m | grep redis
Lỗi 3: Redis dùng quá nhiều RAM
Kiểm tra dung lượng Redis đang dùng:
# Kiểm tra dung lượng Redis đang sử dụng
redis-cli INFO memory
# Lọc lấy thông tin bộ nhớ
redis-cli INFO memory | grep used_memory_human
# Output ví dụ: used_memory_human:45.32M
Cách fix: Giảm maxmemory trong /etc/redis/redis.conf xuống 128MB và restart Redis. Hoặc dùng lệnh FLUSHALL để xóa toàn bộ cache (chỉ làm khi thực sự cần).
9. Một số mẹo nâng cao
- Phân biệt database: Dùng database 0 cho WordPress, database 1 cho Laravel session, database 2 cho Laravel cache. Thêm
database 1vào file cấu hình Laravel nếu cần. - Redis Persistence: Bật AOF (Append Only File) nếu bạn muốn đảm bảo dữ liệu không bị mất khi restart server. Tuy nhiên, với mục đích cache thuần túy, RDB là đủ và nhanh hơn.
- Monitor Redis: Dùng
redis-cli MONITORđể xem real-time tất cả commands đang chạy. Rất hữu ích khi debug. - Kết hợp với Nginx FastCGI Cache: Dùng cả Redis Object Cache và Nginx cache sẽ cho tốc độ tối ưu nhất. Xem thêm bài viết về tối ưu hiệu suất WordPress với LiteSpeed Cache.
Kết luận
Redis Cache là một “must-have” cho bất kỳ website WordPress hoặc ứng dụng Laravel nào chạy trên RunCloud. Việc cài đặt chỉ mất 5-10 phút nhưng mang lại hiệu suất vượt trội: giảm 80-90% database queries, tăng tốc load trang gấp 3-5 lần.
Bạn có thể kết hợp Redis với các kỹ thuật tối ưu khác như CI/CD Pipeline với GitHub Actions và RunCloud để có một hệ thống hoàn chỉnh, tự động hóa từ phát triển đến deployment.
Nếu bạn gặp bất kỳ lỗi nào trong quá trình cài đặt, hãy để lại bình luận bên dưới. Đừng quên kiểm tra và fix lỗi Ubuntu mirror nếu bạn đang dùng server tại Singapore để tránh lỗi cài đặt package.
Chúc bạn thành công!