12/08/2018, 14:41

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:: " .$redisget("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

0