Trong quá trình phát triển web, tối ưu hóa hiệu năng (performance) là một trong những yếu tố then chốt giúp website của bạn chạy mượt mà và phản hồi nhanh chóng. Một trong những công cụ phổ biến được sử dụng để tăng hiệu suất của ứng dụng web là Memcache, Redis.
Memcache và Redis là hai hệ thống lưu trữ dữ liệu cache, giúp giảm thiểu thời gian truy cập vào cơ sở dữ liệu và tăng tốc độ trả về dữ liệu. Cả hai đều là các giải pháp cache thông dụng trong ứng dụng PHP. Tuy nhiên, Redis thường được coi là một lựa chọn phổ biến hơn trong các dự án hiện đại, đặc biệt là khi cần sử dụng các tính năng phức tạp hơn ngoài việc chỉ lưu trữ và truy xuất dữ liệu cache đơn giản.
Mục lục
Cài đặt Redis Server với XAMPP và chạy ứng dụng
Cài đặt trên MacOS
- Bước 1: Kiểm tra version PHP trong XAMPP với lệnh sau: /Applications/XAMPP/xamppfiles/bin/php -v
- Sau đó bạn vào https://pecl.php.net/package/redis để chọn và download Redis với version tương ứng với version PHP. (Ví dụ chọn https://pecl.php.net/package/redis/6.0.2 với PHP 7.2.0 or newer)
- Tiến hành cài Redis: vào thư mục chứa file redis-6.0.2.tgz và chạy lệnh sau: /Applications/XAMPP/xamppfiles/bin/pecl install redis-6.0.2.tgz
- Sau khi cài đặt thành công thì tiến hành chạy Redis Server: redis-server
- Kiểm tra xem Redis Server có chạy tốt bằng lệnh sau: redis-cli ping
Như vậy chúng ta đã có một Redis Server chạy tại local machine giúp việc lưu trữ cache để tăng tốc performance cho mọi website có sử dụng Redis.
Triển khai lập trình và chạy website sử dụng Redis Server
Tại Terminal:
- Tạo thư mục dự án ‘redis’ trong thư mục `/Applications/XAMPP/xamppfiles/htdocs` với lệnh sau: mkdir redis
- Sau đó, vào thư mục dự án ‘redis’ chạy lệnh sau để dùng Redis client (PHP 7.2 và cao hơn)
composer require predis/predis
Tạo file redis.php với nội dung sau:
Ta tiến hành truy cập link http://localhost/redis/redis.php (chú ý: phải đảm bảo Redis Server đã chạy với lệnh redis-server) lúc này ứng dụng kiểm tra hệ thống đã lưu trữ data cho từ khóa `key` chưa. Nếu chưa, hệ thống sẽ tiến hành kết nối database, query để lấy dữ liệu và lưu trữ vào khoá `key` trong vòng 60 giây.
- Các lần sau, nếu truy cập vào link http://localhost/redis/redis.php hệ thống chỉ việc lấy data trong Redis và trả về cho người dùng nếu thời gian cache chưa hết hạn. Như vậy, việc dùng Redis sẽ giúp cải thiện hiệu năng (performance) của webite vì không cần phải truy vấn data trong cơ sở dữ liệu.
Sử dụng Redis Cloud và chạy ứng dụng
Sử dụng Redis Cloud
- Vào Redis Cloud console link và sigin in với google account.
- Tạo database miễn phí và click nút “Let’s start free”.
- Click database name “Phuong-free-db” để xem host, post và mật khẩu. Cấu hình này sẽ được cấu hình trong file php để kết nối Redis Cloud.
- Ghi chú: các bạn có thể xem qua hướng dẫn tại hãng tại: https://redis.io/docs/latest/operate/rc/databases/create-database/create-essentials-database/ nếu có sự khác biệt về các bước trên.
Triển khai lập trình và chạy website sử dụng Redis Cloud
Tại Terminal:
- Tạo thư mục dự án ‘redis’ trong thư mục `/Applications/XAMPP/xamppfiles/htdocs` với lệnh sau (bạn bỏ qua bước này nếu đã xem mục 2.2): mkdir redis
- Sau đó, vào thư mục dự án ‘redis’ chạy lệnh sau để dùng Redis client (PHP 7.2 và cao hơn) (bạn bỏ qua bước này nếu đã xem mục 2.2): composer require predis/predis
- Tạo file redis_cloud.php với nội dung sau:
- Ta tiến hành truy cập link http://localhost/redis/redis_cloud.php, lúc này ứng dụng kiểm tra hệ thống đã lưu trữ data cho từ khóa `key` chưa. Nếu chưa, hệ thống sẽ tiến hành kết nối database, query để lấy dữ liệu và lưu trữ vào khoá `key` trong vòng 60 giây.
- Các lần sau, nếu truy cập vào link http://localhost/redis/redis_cloud.php hệ thống chỉ việc lấy data trong Redis Cloud và trả về cho người dùng nếu thời gian cache chưa hết hạn. Như vậy, việc dùng Redis Cloud sẽ giúp cải thiện hiệu năng (performance) của webite vì không cần phải truy vấn data trong cơ sở dữ liệu.
References:
- https://github.com/predis/predis
- https://pecl.php.net/package/redis
- https://redis.io/docs/latest/operate/rc/databases/create-database/create-essentials-database/
Giảng viên Nguyễn Lê Phương
Bộ môn Công nghệ thông tin
FPT Polytechnic Hồ Chí Minh