Vấn đềBạn mở bảng điều khiển WordPress và thấy một cảnh báo gây khó chịu: Error establishing a Redis connection. Điều này xảy ra khi plugin WordPress của bạn—thường là Redis Object Cache hoặc WP Redis—mất kết nối với Redis server. Mặc dù trang web của bạn vẫn có thể tải bằng cơ chế dự phòng (fallback), nhưng hiệu suất sẽ giảm mạnh. Thời gian tải trang thường tăng từ 200ms nhanh chóng lên hơn 2 giây vì cơ sở dữ liệu phải xử lý mọi tác vụ nặng mà không có bộ nhớ đệm (cache).
Nguyên nhân phổ biến- Dịch vụ Redis bị treo hoặc không tự khởi động sau khi khởi động lại máy chủ.- Thiếu extension PHP-Redis, đặc biệt là sau khi nâng cấp phiên bản PHP.- Sai thông tin đăng nhập hoặc cài đặt host trong wp-config.php.- Redis đang lắng nghe trên sai IP hoặc cổng.- Máy chủ hết RAM và trình xử lý OOM (Out Of Memory) của Linux đã ngắt tiến trình Redis.## Bước 1: Kiểm tra xem Redis có thực sự đang chạy khôngHầu hết các trường hợp, dịch vụ đơn giản là đã dừng hoạt động. Hãy đăng nhập vào máy chủ qua SSH và kiểm tra trạng thái ngay lập tức.
# Cho Ubuntu/Debian
sudo systemctl status redis-server
# Cho CentOS/RHEL
sudo systemctl status redis
Nếu kết quả hiển thị inactive (dead) hoặc failed, hãy thử khởi động lại dịch vụ:
sudo systemctl start redis-server
Để ngăn chặn tình trạng này xảy ra sau lần bảo trì máy chủ tiếp theo, hãy đảm bảo nó tự khởi động cùng hệ thống:
sudo systemctl enable redis-server
Bước 2: Kiểm tra kết nối thủ côngDịch vụ đang chạy không phải lúc nào cũng có nghĩa là kết nối đang hoạt động. Sử dụng công cụ redis-cli có sẵn để ping máy chủ và kiểm tra khả năng phản hồi.
redis-cli ping
Một máy chủ hoạt động tốt sẽ phản hồi PONG. Nếu bạn thấy "Connection refused", Redis có thể đã được cấu hình để sử dụng Unix socket thay vì cổng TCP, hoặc nó đang lắng nghe trên một cổng hoàn toàn khác.
Bước 3: Xác minh Extension PHP-RedisWordPress không thể giao tiếp với Redis nếu thiếu "thông dịch viên". Đó chính là extension PHP-Redis. Nếu gần đây bạn đã nâng cấp trang web từ PHP 8.1 lên 8.3, extension này có thể bị thiếu ở phiên bản mới.
Chạy lệnh này để xem module có đang hoạt động hay không:
php -m | grep redis
Nếu kết quả trống, hãy cài đặt extension. Đối với máy chủ chạy PHP 8.3 trên Ubuntu, hãy sử dụng:
sudo apt install php8.3-redis
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx
Bước 4: Kiểm tra cài đặt trong wp-config.phpNếu máy chủ vẫn ổn nhưng WordPress vẫn báo lỗi, khả năng cao là do cấu hình của bạn. Hãy mở tệp wp-config.php và kiểm tra các hằng số sau.
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
// define('WP_REDIS_PASSWORD', 'mat-khau-bi-mat-cua-ban');
Hãy lưu ý những lỗi thường gặp sau:
- Localhost vs 127.0.0.1: Một số máy chủ không phân giải
localhostchính xác. Hãy sử dụng127.0.0.1để đảm bảo an toàn.- Bảo vệ bằng mật khẩu: Nếu bạn thiết lậprequirepasstrongredis.conf, bạn phải đưa nó vào cấu hình của mình.- Unix Sockets: Nếu bạn muốn hiệu suất tốt hơn, hãy sử dụng đường dẫn socket như/var/run/redis/redis.sockthay vì địa chỉ IP.## Bước 5: Kiểm tra Firewall và Bind AddressBạn đang chạy Redis trên một máy chủ cơ sở dữ liệu riêng biệt? Nếu vậy, Redis mặc định chỉ cho phép các kết nối cục bộ. Bạn cần chỉnh sửa tệp/etc/redis/redis.confđể cho phép lưu lượng truy cập từ bên ngoài.
# Tìm dòng này:
bind 127.0.0.1
# Thay đổi để bao gồm IP nội bộ của web server:
bind 127.0.0.1 10.0.0.5
Sau khi cập nhật cấu hình, hãy khởi động lại Redis. Đừng quên mở cổng 6379 trên tường lửa (UFW hoặc Firewalld) để cho phép web server truy cập.

