Redis (Remote Dictionary Server) là một mã nguồn mở được dùng để lưu trữ dữ liệu có cấu trúc, có thể sử dụng như một database, bộ nhớ cache hay một message broker. Nó là hệ thống lưu trữ dữ liệu với dạng KEY-VALUE rất mạnh mẽ và phổ biến hiện nay. Redis nổi bật bởi việc hỗ trợ nhiều cấu trúc dữ liệu cơ bản như:hash, list, set, sorted set, string… Tất cả dữ liệu được ghi và lưu trên ram, do đó tốc độ đọc ghi dữ liệu rất là nhanh.
Ngoài ra Redis còn được sử dụng làm bộ nhớ đệm (Cache). Chính tốc độ đọc ghi nhanh mà Redis có thể làm bộ nhớ đệm, nơi chia sẻ dữ liệu giữa các ứng dụng hoặc làm database tạm thời. Ngoài ra Redis có thể sử dụng để làm Full Page Cache cho website. Cũng vì tính nhất quán của Redis, cho dù restart Redis thì người dùng cũng không có cảm nhận chậm khi tải trang.
Yêu cầu
- VPS/Server sử dụng CentOS7
- Đã cài đặt PHP-FPM bao gồm cả php-devel
- Ram từ 2GB trở lên và có cấu hình Swap
Bước 1: Cài đặt EPEL
Redis không có sẵn trong kho yum mặc định vì vậy bạn cần bật kho lưu trữ EPEL yum trên máy chủ của mình trước khi cài đặt redis. Để kích hoạt EPEL các bạn sử dụng lệnh sau:
yum install epel-release
Bước 2: Cài đặt Redis
Bây giờ, Bạn có thể sử dụng trình quản lý gói yum để cài đặt máy chủ Redis trên VPS. Thực thi lệnh để cài đặt Redis trên hệ thống của bạn:
yum install -y redis
Sau khi cài đặt thành công, khởi động lại dịch vụ Redis và cho phép tự động khởi động khi khởi động lại hệ thống.
systemctl enable redis systemctl start redis
Bước 3: Cài đặt igbinary
Igbinary là sự thay thế cho bộ nối tiếp php tiêu chuẩn. Igbinary lưu trữ các cấu trúc dữ liệu php ở dạng nhị phân giúp tiết kiệm bộ nhớ cache cũng như tăng tốc độ load. Để biết thêm về Igbinary các bạn có thể xem thêm tại đây.
- Cài đặt cho Igbinary PHP 5.6
cd /opt wget https://pecl.php.net/get/igbinary-2.0.8.tgz tar -xvf igbinary-2.0.8.tgz cd igbinary-2.0.8 /usr/bin/phpize && ./configure --with-php-config=/usr/bin/php-config make && make install
- Cài đặt cho Igbinary PHP 7
cd /opt wget https://pecl.php.net/get/igbinary-3.1.2.tgz tar -xvf igbinary-3.1.2.tgz cd igbinary-3.1.2 /usr/bin/phpize && ./configure --with-php-config=/usr/bin/php-config make && make install
- Lưu ý: Nếu gặp thông báo lỗi như dưới đây nghĩa là các bạn chưa cài đặt php-devel
Can't find PHP headers in /usr/include/php The php-devel package is required for use of this command.
Để cài php-devel các bạn có thể chạy lệnh sau
yum -y install php-devel
Bước 4: Cài đặt Redis PHP extension
Tiếp theo các bạn cần cài đặt Redis PHP extension
- Cài đặt cho Redis PHP extension PHP 5.6
cd /opt wget https://pecl.php.net/get/redis-4.3.0.tgz tar -xvf redis-4.3.0.tgz cd redis-4.3.0 /usr/bin/phpize && ./configure --enable-redis-igbinary --with-php-config=/usr/bin/php-config make && make install
- Cài đặt cho Redis PHP extension PHP 7
cd /opt wget https://pecl.php.net/get/redis-5.2.1.tgz tar -xvf redis-5.2.1.tgz cd redis-5.2.1 /usr/bin/phpize && ./configure --enable-redis-igbinary --with-php-config=/usr/bin/php-config make && make install
Bước 5: Cấu hình Load Redis Module
Để PHP có thể load được Igbinary và Redis PHP extension các bạn tạo file /etc/php.d/00-custom.ini với nội dung như sau:
extension=igbinary.so extension=redis.so
Sau đó các bạn tiến hành restart lại php-fpm
service php-fpm restart
Để kiểm tra xem module đã được load hay chưa các bạn dùng lệnh sau
php -m | grep redis php -m | grep igbinary
Bước 6: Cấu hình Redis làm Máy chủ Cache
Các bạn mở file /etc/redis/redis.conf và xoá toàn bộ nội dung bên trong sau đó thay thế bằng nội dung sau
maxmemory 256mb maxmemory-policy allkeys-lru save ""
Cấu hình trên yêu cầu Redis xóa bất kỳ khóa nào bằng thuật toán LRU khi đạt tới bộ nhớ tối đa 256mb. Lưu tệp cấu hình và khởi động lại dịch vụ Redis:
systemctl restart redis
Bước 7: Kiểm tra kết nối với Redis Server
Để kiểm tra xem redis đã hoạt động hay chưa các bạn dùng lệnh sau
redis-cli ping
Nếu kết quả trả về là PONG nghĩa là redis đã hoạt động.
Tài liệu tham khảo:
- https://redis.io/documentation
- https://github.com/igbinary/igbinary
Chúng ta đã cài đặt và cấu hình xong Redis để làm cache server. Chúc bạn thành công.