Tìm hiểu Redis
Trong bài viết này mình sẽ giúp bạn hiểu rõ những khái niệm về redis là gì? cách cài đặt, làm sao để sử dụng Redis php. Redis là gì ? Redis là một cơ sở dữ liệu nguồn mở lưu trữ dữ liệu theo dạng key-value. Redis cũng thường được gọi là server lưu trữ các cấu trúc dữ liệu (data ...
Trong bài viết này mình sẽ giúp bạn hiểu rõ những khái niệm về redis là gì? cách cài đặt, làm sao để sử dụng Redis php.
Redis là gì ?
- Redis là một cơ sở dữ liệu nguồn mở lưu trữ dữ liệu theo dạng key-value.
- Redis cũng thường được gọi là server lưu trữ các cấu trúc dữ liệu (data structure server) do các khóa có thể bao gồm các dữ liệu kiểu strings, hashes, lists, sets và sorted sets.
- Redis được lưu trữ key-value trên RAM với hiệu năng cao, redis còn hỗ trợ lưu trữ dữ liệu trên đĩa cứng (persistent redis) cho phép phục hồi dữ liệu khi gặp sự cố
Redis có những ưu điểm gì?
-
Redis hỗ trợ add, update, delete dữ liệu một cách nhanh chóng.
-
Lưu trữ dữ liệu dạng KEY-VALUE.
-
Dữ liệu được lưu trữ trên RAM giúp việc truy xuất dữ liệu một cách nhanh chóng. Ngoài ra bạn có thể cấu hình để Redis có thể lưu trữ dữ liệu trên ổ cứng.
-
Bạn có thể cấu hình cho key tự động xoá trong khoảng thời gian nhất định(expire).
-
Hỗ trợ nhiều loại kiểu dữ liệu khác nhau.
-
Hỗ trợ Queue(hàng đợi) thông qua cơ chế PUB/SUB, chúng ta có thể dùng Redis để làm hệ thống queue cho website xử lý tuần tự từng request.
Các kiểu dữ liệu trong Redis
-
STRING: string, integer hoặc float. Redis có thể làm việc với cả string, từng phần của string, cũng như tăng/giảm giá trị của integer, float.
-
LIST: danh sách liên kết của các strings. Redis hỗ trợ các thao tác push, pop từ cả 2 phía của list, trim dựa theo offset, đọc 1 hoặc nhiều items của list, tìm kiếm và xóa giá trị.
-
SET: tập hợp các string (không được sắp xếp). Redis hỗ trợ các thao tác add/read/delete từng phần tử, kiểm tra sự xuất hiện của phần tử trong tập hợp. Ngoài ra Redis còn hỗ trợ các phép toán tập hợp, gồm intersect/union/difference.
-
HASH: lưu trữ hash table của các cặp key-value, trong đó key được sắp xếp ngẫu nhiên, không theo thứ tự nào cả. Redis hỗ trợ các thao tác add/read/delete từng phần tử, cũng như đọc tất cả giá trị.
-
ZSET (sorted set): là 1 danh sách, trong đó mỗi phần tử là map của 1 string (member) và 1 floating-point number (score), danh sách được sắp xếp theo score này. Redis hỗ trợ thao tác add/read/delete từng phần tử, lấy ra các phần tử dựa theo range của score hoặc của string.
Cài đặt Redis
Đầu tiên để cài đặt, bạn download “phpredis” từ github theo địa chỉ sau (Link https://github.com/phpredis/phpredis)
Khi đã tải về xong, giải nén các tập tin vào thư mục phpredis. Trên ubuntu, cài đặt phần mở rộng này như hình dưới đây
cd phpredis sudo phpize sudo ./configure sudo make sudo make install
Tiếp theo thêm phần mở rộng sau vào file php.ini
extension = redis.so
Như vậy bạn đã cài đặt xong Redis PHP.
Đối với windows bạn có thể download file cài đặt theo đường dẫn sau (https://github.com/rgl/redis/downloads), Khi tải về và cài đặt như bình thường .
Sử dụng phpredis
Connect to redis server
Kiểm tra kết nối Redis Server
<?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //check whether server is running or not echo "Server is running: ".$redis->ping(); ?>
Khi chương trình được thực thi, kết quả sẽ như sau
Connection to server sucessfully Server is running: PONG
Giải thích chút: 127.0.0.1 là địa chỉ ip localhost, 6379 là port mà redis server đang chạy. Khi PING nếu trả về là PONG thì nghĩa là Redis đã cài đặt và kết nối thành công trên máy bạn.
Redis PHP String Example
<?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //set the data in redis string $redis->set("tutorial-name", "Redis tutorial"); // Get the stored data and print it echo "Stored string in redis:: " .$redis→get("tutorial-name"); ?>
Kết quả:
Connection to server sucessfully Stored string in redis:: Redis tutorial
Redis php List Example
<?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; //store data in redis list $redis->lpush("tutorial-list", "Redis"); $redis->lpush("tutorial-list", "Mongodb"); $redis->lpush("tutorial-list", "Mysql"); // Get the stored data and print it $arList = $redis->lrange("tutorial-list", 0 ,5); echo "Stored string in redis:: "; print_r($arList); ?>
Kết quả:
Connection to server sucessfully Stored string in redis:: Redis Mongodb Mysql
Redis PHP Keys Example
<?php //Connecting to Redis server on localhost $redis = new Redis(); $redis->connect('127.0.0.1', 6379); echo "Connection to server sucessfully"; // Get the stored keys and print it $arList = $redis->keys("*"); echo "Stored keys in redis:: " print_r($arList); ?>
Kết quả:
Connection to server sucessfully Stored string in redis:: tutorial-name tutorial-list
Kết Luận
Hiện nay có rất nhiều website sử dụng Redis để caching cho website của mình từ những cơ sở dữ liệu như MySQL đã quá nặng nề. Giúp làm tăng tốc quá trình đọc dữ liệu, do Redis đọc dữ liệu từ RAM cho nên tốc độ truy xuất nhanh hơn, giảm thời gian tải trang cho website của mình.
Một số link các bạn có thể tham khảo: https://www.tutorialspoint.com/redis/redis_php.htm https://github.com/phpredis/phpredis https://redis.io/documentation