Công cụ lưu trữ Redis phổ biến là một công cụ tuyệt vời và cần phải có trong kho vũ khí của bất kỳ nhà phát triển phần mềm nào. Công cụ lưu trữ trong bộ nhớ cho phép lưu trữ và truy xuất dữ liệu cực kỳ nhanh chóng, lên đến 32 triệu truy vấn ấn tượng mỗi giây, làm cho nó trở thành một bổ sung chính cho bất kỳ công cụ cơ sở dữ liệu lớn nào.
Hãy đi sâu vào và tìm hiểu cách tăng tốc các hoạt động trực tuyến của chúng tôi.
Redis: Ưu điểm so với nhược điểm
Lợi ích lớn nhất của Redis là nó hoàn toàn là một kho lưu trữ dữ liệu trong bộ nhớ , có nghĩa là nó rất nhanh vì cơ sở dữ liệu được lưu trữ trong RAM do đó không cần thực hiện các thao tác nhập / xuất tệp vào ổ cứng.
Các lợi ích bổ sung khác là tính đơn giản, hỗ trợ phân cụm thông qua Redis-cluster, cộng với việc hỗ trợ tám loại dữ liệu khác nhau, cung cấp cho bạn sự linh hoạt cần thiết để lưu trữ và quản lý dữ liệu của mình khi cần thiết.
Tuy nhiên, điểm sụp đổ lớn nhất của nó cũng là thực tế nó hoàn toàn là một kho lưu trữ dữ liệu trong bộ nhớ, do đó đi kèm với các giới hạn về kích thước. Nó phụ thuộc vào cơ sở hạ tầng máy chủ của bạn, nhưng vì lợi ích của bài viết này và sự đơn giản, cơ sở dữ liệu Redis điển hình của bạn sẽ chỉ chứa tối đa 2-4 GB dữ liệu.
Điều này có nghĩa là Redis được sử dụng để khen ngợi các công cụ cơ sở dữ liệu được sử dụng phổ biến như mySQL, PostgreSQL và MongoDB, và không có nghĩa là một sự thay thế. Các mục đích sử dụng chính của Redis bao gồm bộ nhớ cache, dữ liệu tạm thời / gần đây sẽ hết hạn trong một khoảng thời gian ngắn hoặc các phần dữ liệu nhỏ thường xuyên được truy cập.
Cách cài đặt Redis
Giả sử bạn đang chạy Ubuntu hoặc bất kỳ bản phân phối Linux nào có chứa lệnh apt-get , để cài đặt Redis, chỉ cần chạy lệnh sau trong terminal:
sudo apt-get install redis-server
Tiếp theo, hãy kiểm tra để đảm bảo Redis đã được cài đặt thành công. Trong thiết bị đầu cuối, hãy chạy lệnh:
redis-cli --version
Thao tác này sẽ in ra phiên bản Redis bạn đang chạy và giả sử như vậy, hãy chạy lệnh sau để kết nối với Redis:
redis-cli
Điều này sẽ cung cấp cho bạn lời nhắc Redis không chuẩn trong thiết bị đầu cuối, trông giống như sau:
127.0.0.1:6379>
Lệnh chuỗi
Mọi mục nhập vào Redis được xác định bằng một khóa, có thể là bất kỳ chuỗi nào không có khoảng trắng mà bạn muốn. Các chuỗi chỉ chứa một giá trị duy nhất và ví dụ: chạy các lệnh sau tại dấu nhắc Redis để đặt giá trị cho một vài khóa.
127.0.0.1:6379> set full_name "John Doe" 127.0.0.1:6379> set units 5
Bây giờ, bạn có thể liệt kê tất cả các khóa hiện có trong cơ sở dữ liệu Redis bằng lệnh phím.
127.0.0.1:6379> keys *
Điều này sẽ dẫn đến việc hiển thị hai khóa bạn đã đặt trước đó, full_name và unit . Bạn có thể thấy giá trị của các khóa này bằng lệnh get.
127.0.0.1:6379> get full_name "John Doe" 127.0.0.1:6379> get units 5
Việc xóa các phím có thể dễ dàng được thực hiện bằng lệnh del.
127.0.0.1:6379> del full_name
Cũng có thể tăng nhanh một số nguyên bằng lệnh hincrby . Phần sau sẽ tăng phím "đơn vị" từ 5 lên 7.
127.0.0.1:6379> incrby units 2
Liệt kê các lệnh
Danh sách trong Redis là mảng một chiều với một thứ tự cụ thể và cho phép các mục trùng lặp trong các vị trí khác nhau của danh sách. Các mục có thể được thêm vào bên trái hoặc bên phải của danh sách bằng các lệnh lpush và rpush .
127.0.0.1:6379> lpush colors blue 127.0.0.1:6379> rpush colors red yellow green
Như bạn có thể thấy từ ví dụ trên, bạn có thể đẩy nhiều mục vào một danh sách trong một lệnh duy nhất. Bây giờ chúng ta có thể xem tất cả các mục trong danh sách bằng cách sử dụng lệnh lrange .
127.0.0.1:6379> lrange colors 0 -1
Có hai số nguyên ở cuối lệnh, số đầu tiên xác định vị trí trong danh sách để bắt đầu và số thứ hai là số mục trả về với -1 nghĩa là tất cả các mục. Kết quả của lệnh trên sẽ là, xanh lam, đỏ, vàng, xanh lá cây .
Bạn cũng có thể xóa các mục khỏi đầu danh sách bằng cách sử dụng lệnh lpop và rpop .
127.0.0.1:6379> lpop colors blue 127.0.0.1:6379> rpop colors green
Bạn cũng có thể lấy số phần tử trong danh sách bằng lệnh llen .
127.0.0.1:6379> llen colors (integer) 2
Cuối cùng, bạn có thể xóa một phần tử khỏi danh sách thông qua lệnh lrem .
127.0.0.1:6379> lrem colors 1 green (integer) 1
Lệnh lrem bắt đầu bằng tên danh sách, theo sau là số lần xuất hiện cần loại bỏ và tên của phần tử cần loại bỏ. Nó sẽ trả về số lần xuất hiện được tìm thấy và bị xóa khỏi danh sách.
Lệnh băm
Một trong những kiểu dữ liệu phổ biến nhất trong Redis là hàm băm, cho phép bạn lưu trữ nhiều cặp khóa-giá trị trong một mục nhập duy nhất. Khóa không cần tồn tại và bạn xác định các cặp khóa-giá trị bất cứ lúc nào bằng lệnh hset .
127.0.0.1:6379> hset user:581 full_name "Jane Doe" 127.0.0.1:6379> hset user:581 points 500
Bạn cũng có thể xác định nhiều cặp khóa-giá trị của một hàm băm trong một lệnh duy nhất bằng cách sử dụng lệnh hmset .
127.0.0.1:6379> hmset user:581 email [email protected] gender F
Hàm băm được xác định bởi người dùng khóa : 581 hiện có tổng cộng bốn cặp khóa-giá trị, tất cả đều có thể được truy xuất dễ dàng bằng lệnh hgetall .
127.0.0.1:6379> hgetall user:581 1) "full_name" 2) "Jane Doe" 3) "points" 4) "500" 5) "email" 6) "[email protected]" 7) "gender" 8) "F"
Bạn cũng có thể lấy giá trị của một cặp khóa-giá trị trong một hàm băm bằng cách sử dụng lệnh get .
127.0.0.1:6379> hget user:581 email "[email protected]"
Đối với bất kỳ số nguyên nào trong hàm băm, bạn có thể tăng chúng lên một số lượng được chỉ định bằng lệnh hincrby mã .
127.0.0.1:6379> hincrby user:581 points 20 (integer) 520
Giá trị của khóa điểm trong hàm băm hiện đã được tăng từ 20 lên 520. Một cặp khóa-giá trị đơn lẻ trong hàm băm có thể bị xóa bằng lệnh hdel .
127.0.0.1:6379> hdel user:581 gender
Ngoài ra, bạn cũng có thể xóa hoàn toàn một hàm băm bao gồm tất cả các cặp khóa-giá trị bằng cách sử dụng lệnh del .
127.0.0.1:6379> del user:581
Phím Redis sắp hết hạn
Một tính năng tuyệt vời khác của Redis là khả năng tự động hết hạn phím sau một số giây xác định bằng cách sử dụng lệnh hết hạn . Xin lưu ý, bạn chỉ có thể hết hạn các khóa đầy đủ chứ không phải các phần tử số ít trong danh sách hoặc hàm băm. Ví dụ:
127.0.0.1:6379> expire full_name 10
Điều này sẽ đặt thời gian hết hạn là 10 giây trên khóa full_name mà bạn đã tạo trong phần chuỗi. Sau khi chạy lệnh trên, hãy đợi 10 giây rồi thử lấy lại giá trị của khóa.
127.0.0.1:6379> get full_name (nil)
Như mong đợi, khóa hiện đã hết hạn do đó kết quả là chúng tôi nhận được giá trị rỗng.
Kết nối với Redis bằng PHP
Bây giờ bạn đã học được những kiến thức cơ bản về cách lưu trữ và truy xuất dữ liệu với Redis, đã đến lúc kết nối nó với phần mềm của bạn. Tất cả các ngôn ngữ lập trình đều có mô-đun / phần mở rộng cho Redis, nhưng đối với ví dụ này, chúng tôi sẽ sử dụng PHP.
Trước tiên, bạn phải cài đặt tiện ích mở rộng PHP-Redis vì nó không được cài đặt theo mặc định. Trong thiết bị đầu cuối, hãy chạy lệnh.
sudo apt-get install php-redis
Sau khi cài đặt, hãy đảm bảo khởi động lại PHP-fpm để tiện ích mở rộng được tải đúng cách. Đây là một số mã PHP kết nối và giao diện với Redis.
<> // Connect to redis $conn = new redis(); try { $conn->connect('127.0.0.1', 6379, 5); } catch (RedisException $e) { die("Unable to connect to redis"); } // Set string $conn->set('country', 'Canada'); // Get string $value = $conn->get('country'); echo "Country is: $value "; // Define a profile $profile = [ 'username' => 'mike', 'full_name' => 'Mike Smith', 'email' => '[email protected]', 'country' => 'Australia' ]; // Create a hash $conn->hmset('user:188', $profile); // Get all values of the profile hash $values = $conn->hgetall('user:188'); print_r($values); // Get only the e-mail address $email = $conn->hget('user:188', 'email'); echo "E-mail is: $email "; // Expire the hash in 15 seconds $conn->expire('user:188', 15);
Đoạn mã ví dụ trên sẽ khá dễ hiểu. Đầu tiên, nó kết nối với Redis với thời gian chờ là 5 giây, sau đó tiến hành thiết lập và lấy chuỗi và băm. Tất cả các lệnh Redis có thể được thực hiện thông qua OOP bằng cách gọi chúng trực tiếp từ đối tượng Redis như được lấy mẫu ở trên.
Bạn đang đi trên con đường của mình!
Xin chúc mừng, bạn đã học được những kiến thức cơ bản về cách lưu trữ và truy xuất dữ liệu với tốc độ cực nhanh thông qua công cụ lưu trữ Redis, bao gồm cả cách kết nối và giao diện với Redis bằng PHP.
Xin lưu ý, bài viết này chỉ trình bày những điều rất cơ bản và trang Redis Data Type của tài liệu là một nơi tuyệt vời để tiếp tục khám phá Redis và tất cả chức năng của nó.