Làm cách nào để kết nối laravel với Redis?

Redis là một dự án cấu trúc dữ liệu trong bộ nhớ triển khai cơ sở dữ liệu khóa-giá trị trong bộ nhớ, phân tán và sử dụng nó với một khung như Laravel để lưu trữ dữ liệu hầu hết sẽ được đọc và sẽ không thay đổi nhiều lần có thể tăng đáng kể tốc độ

Trong hướng dẫn này, bạn sẽ được học

  • Cách cài đặt Redis và các tùy chọn cài đặt có sẵn cho bạn
  • Redis Kiểu dữ liệu với các ví dụ liên quan
  • Tạo một Thương mại điện tử đơn giản bằng Laravel với Redis để lưu trữ dữ liệu
  • Sử dụng Laravel Websocket với hàng đợi Redis để hiển thị cập nhật trực tiếp cho người dùng mà không phải làm mới trang

Yêu cầu

Với mục đích của hướng dẫn này, bạn phải có

  • Laravel 7 mới. x được cài đặt trong thư mục webroot của bạn
  • Phải đang sử dụng máy Linux hoặc Mac OS
  • Phải cài đặt trình soạn nhạc trên toàn cầu trên máy của bạn
  • Phải sử dụng phiên bản PHP cao hơn 7. 2

Trước bất cứ điều gì, bạn cần cài đặt ứng dụng khách Redis trên máy của mình nếu chưa có nó. Cách được đề xuất nhiều nhất là biên dịch trực tiếp từ nguồn, để thực hiện việc này, hãy chạy các lệnh sau theo thứ tự này trên thiết bị đầu cuối của bạn

wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make

Cuối cùng, làm điều này

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli

Xem mọi thứ có hoạt động tốt không bằng cách chạy lệnh này từ thiết bị đầu cuối của bạn

redis-cli

Nếu mọi thứ hoạt động tốt, bạn sẽ được đưa vào giao diện dòng lệnh Redis

Cài đặt PHP Redis

Có hai tùy chọn để cài đặt Redis với Laravel, cách dễ nhất và phương pháp đầu tiên là sử dụng trình soạn thảo để cài đặt gói predis/predis qua Trình soạn thảo

composer require predis/predis

Như tại Laravel 7. x gói này đã bị tác giả ban đầu của nó bỏ rơi và Laravel đang xem xét loại bỏ nó trong một bản phát hành trong tương lai

Tùy chọn hai là tùy chọn được khuyên dùng nhiều nhất nhưng tẻ nhạt hơn là cài đặt tiện ích mở rộng PHPRedis cung cấp API để giao tiếp với máy chủ Redis. Không giống như gói soạn thảo predis, nó đáng tin cậy và nhanh hơn và có thể được sử dụng trong các ứng dụng lớn hơn

Chúng tôi sẽ cài đặt tiện ích mở rộng PHPRedis bằng PECL. Dành cho những ai chưa biết, PECL là kho lưu trữ PHP Extensions

Cài đặt trên Ubuntu

sudo apt-get -y install gcc make autoconf libc-dev pkg-config  
sudo peclX.Y-sp install redis

Ghi chú. Thay thế

redis-cli
6 bằng bất kể phiên bản PHP của bạn là gì, bạn có thể kiểm tra bằng cách chạy
redis-cli
7 từ thiết bị đầu cuối của mình, vì vậy nếu phiên bản PHP của bạn là 7. 2 lệnh của bạn sẽ là
redis-cli
8

Khi tiện ích mở rộng được cài đặt thành công, hãy tạo tệp cấu hình để tiện ích mở rộng Redis được tải, sau đó khởi động lại PHP bằng cách chạy lệnh sau

________số 8

Cài đặt trên macOS

Chạy

pecl install redis

Lệnh trên có thể dẫn đến lỗi và không cài đặt hoàn toàn tiện ích mở rộng, nếu đúng như vậy, hãy chạy lệnh bên dưới, trong đó 7. x. x là phiên bản PHP của bạn, bạn có thể chạy

redis-cli
9 để liệt kê tất cả các tệp trong thư mục đó và biết đường dẫn chính xác đến tệp pecl cần xóa

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
1

Bây giờ chỉnh sửa php của bạn. ini, phiên bản đã tải. Để tìm ra cái nào được tải. ini, tạo một phpinfo. php và chèn

composer require predis/predis
0. Kiểm tra đầu ra cho phiên bản đã tải, sau đó chỉnh sửa và xóa dòng bên dưới

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
3

Lưu và thoát khỏi php. tập tin ini

Cuối cùng, tạo

composer require predis/predis
1 chỉnh sửa nó bằng vim hoặc nano, nơi bạn sẽ thay thế 7. X bằng phiên bản PHP của riêng bạn

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
5

Sau đó dán nội dung bên dưới vào tệp mới này

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
0

Khởi động lại php-fpm hoặc nếu bạn đang sử dụng Laravel valet run

composer require predis/predis
2

Loại dữ liệu Redis

Redis có các kiểu dữ liệu khác nhau là String, Lists, Sets, Sorted Sets, Hashes & Bitmaps và Hyperlogs. Chúng tôi sẽ thảo luận về tất cả các loại Dữ liệu có sẵn ngoại trừ loại cuối cùng

Với mục đích của hướng dẫn này, chúng tôi sẽ thử tất cả các ví dụ về kiểu dữ liệu từ giao diện dòng lệnh Redis. Vì vậy, hãy mở một thiết bị đầu cuối mới và chạy lệnh

redis-cli

Sợi dây

Đây là kiểu dữ liệu cơ bản nhất có sẵn. Chuỗi Redis là an toàn nhị phân, điều này có nghĩa là chuỗi Redis có thể chứa bất kỳ loại dữ liệu nào, chẳng hạn như hình ảnh JPEG hoặc đối tượng được tuần tự hóa

Hãy để chúng tôi thử một ví dụ từ dòng lệnh Redis

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
2

danh sách

Nó là một danh sách các chuỗi, được sắp xếp theo thứ tự chèn, trong đó các Mục có thể được thêm vào đầu hoặc cuối danh sách. Laravel sử dụng loại dữ liệu này để lưu trữ các công việc trong hàng đợi, sau đó được thực hiện theo thứ tự chúng được thêm vào danh sách

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
3

bộ

Bộ là một tập hợp các Chuỗi không có thứ tự. Có thể thêm, xóa và kiểm tra sự tồn tại của các phần tử trong một tập hợp. Chúng không cho phép các mục lặp lại và khi truy xuất các mục, chúng không được trả lại theo cùng thứ tự mà chúng được nhập, không giống như danh sách

Và giống như một tập hợp, bạn có thể thực hiện các hành động giữa hai hoặc nhiều tập hợp, chẳng hạn như tìm giao điểm hoặc giao điểm

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
4

Băm

Redis Hashes là ánh xạ giữa các trường chuỗi và giá trị chuỗi, vì vậy chúng là kiểu dữ liệu hoàn hảo để biểu diễn các đối tượng. Trong một cuộc trò chuyện giữa hai người dùng, mỗi tin nhắn được gửi đi và thông tin chi tiết về nó có thể được biểu diễn dưới dạng hashmap

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
5

Bộ được sắp xếp

Các tập hợp được sắp xếp tương tự như các tập hợp ngoại trừ mỗi thành viên của Tập hợp được sắp xếp được liên kết với một điểm số, được sử dụng để sắp xếp tập hợp được sắp xếp theo thứ tự, từ điểm số nhỏ nhất đến điểm số lớn nhất

Hãy tưởng tượng một tập hợp các tin nhắn người dùng được sắp xếp cho lịch sử trò chuyện giữa hai người dùng. Bằng cách này, chúng tôi có thể chắc chắn khi truy xuất thư để hiển thị rằng chúng được trả về theo thứ tự dấu thời gian mà chúng được lưu trữ trong đó dấu thời gian đóng vai trò là điểm số

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
6

Hầu như tất cả các hành động có thể được thực hiện trên một tập hợp đều có thể được thực hiện cho một tập hợp đã sắp xếp

Để tìm hiểu thêm về bộ dữ liệu Redis, hãy truy cập tài liệu chính thức

Ứng dụng thương mại điện tử sử dụng Laravel và Redis

Tại thời điểm này, tôi hy vọng bạn đã cài đặt một dự án laravel mới trong webroot của mình. Tiếp theo thiết lập khung xác thực và truy cập ứng dụng của bạn trong trình duyệt

Nếu bạn chưa làm như vậy, hãy chạy các lệnh sau

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
7

Tạo cơ sở dữ liệu mới Mysql

composer require predis/predis
3

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
8

Mở dự án Laravel thương mại điện tử trong trình soạn thảo PHP của bạn, tôi sử dụng PHPStorm, sau đó chỉnh sửa cấu hình dự án

composer require predis/predis
4 của bạn để khớp với chi tiết cơ sở dữ liệu

cp src/redis-cli /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
#Optionally
sudo cp src/redis-server /usr/local/bin/
chmod 755 /usr/local/bin/redis-cli
9

Sau đó chạy

composer require predis/predis
5 để tạo bảng đặt lại mật khẩu và người dùng trong cơ sở dữ liệu thương mại điện tử

lược đồ cơ sở dữ liệu

Để giúp bạn hiểu rõ hơn về cách Redis đóng vai trò trong việc lưu trữ dữ liệu của chúng ta, dưới đây là bản phác thảo lược đồ cơ sở dữ liệu. Tôi biết bạn đang nghĩ đây không phải là cơ sở dữ liệu NoSQL, lược đồ ở đâu ra đây

Thư giãn một “lược đồ” chỉ đơn giản đề cập đến việc tổ chức dữ liệu như một kế hoạch chi tiết về cách cơ sở dữ liệu được xây dựng

Từ đây mọi việc trở nên dễ dàng hơn, giờ đây chúng ta đã biết rõ hơn về cách dữ liệu của mình nên được biểu diễn trong Redis

Thêm sản phẩm

Thêm các dòng sau vào tệp tuyến đường của bạn

composer require predis/predis
6

redis-cli
0

Tạo một tệp mới

composer require predis/predis
7 sẽ mang biểu mẫu sản phẩm mới của chúng tôi, dán nội dung bên dưới

redis-cli
1

Tiếp theo, tạo một tệp mới

composer require predis/predis
8 để hiển thị tất cả các sản phẩm đã thêm

redis-cli
2

Cuối cùng, cập nhật ProductController của bạn để khớp với mã bên dưới, đừng choáng ngợp, với tất cả các phương thức trong bộ điều khiển này, tôi sẽ giải thích từng chút cho bạn ngay sau đây

redis-cli
3

Bây giờ nếu bạn truy cập trình duyệt của mình

composer require predis/predis
9, bạn sẽ thấy một biểu mẫu để tạo một sản phẩm mới

Để giúp bạn dễ dàng hơn, bên dưới là danh sách 6 sản phẩm có hình ảnh được lưu trữ trên bộ chứa s3 và các thẻ để giúp bạn bắt đầu. Chúng tôi đang sử dụng một URL hình ảnh thay vì tải lên hình ảnh của chính chúng tôi vì điều đó sẽ phù hợp với mục đích hướng dẫn của anh ấy

Sau khi thêm tất cả các sản phẩm tùy thuộc vào thứ tự, bạn sẽ nhận được một cái gì đó giống như ảnh chụp màn hình bên dưới

Lọc theo thẻ

Chúng tôi muốn xem tất cả các sản phẩm liên quan đến thẻ khi chúng tôi nhấp vào thẻ. Để đạt được điều này, hãy thêm một phương thức mới vào ProductController

redis-cli
4

Cập nhật phương thức

sudo apt-get -y install gcc make autoconf libc-dev pkg-config  
sudo peclX.Y-sp install redis
0 để kiểm tra xem có tham số URL thẻ không

redis-cli
5

Như bạn có thể thấy, có rất nhiều khả năng có thể thực hiện với Redis dưới dạng cơ sở dữ liệu. Như một nhiệm vụ ít nhiều là một thử thách, tôi sẽ để bạn hiển thị một sản phẩm và bên dưới nó hiển thị các sản phẩm tương tự bên dưới nó

Dấu. Các sản phẩm tương tự có cùng thẻ với sản phẩm đang hiển thị

Ban đầu được xuất bản trên https. //www. oluwafemialofe. com/posts/using-redis-with-laravel-framework

Xem phiên bản video của khóa học này

Tôi sẽ sớm cập nhật khóa học này để hướng dẫn cách sử dụng Laravel Websocket với hàng đợi Redis để hiển thị cập nhật trực tiếp cho người dùng mà không cần phải làm mới trang

Hàng đợi Redis hoạt động như thế nào trong laravel?

Xử lý hàng đợi tin nhắn trong Laravel . Để xử lý hàng đợi, bạn cần có công nhân chạy không ngừng. you're pushing a task (or “dispatching a job”, as it's called in the Laravel ecosystem) to the Redis queue where it waits until being picked and processed. To process queues, you need to have workers that run non-stop.

Redisphp là gì?

Redis là kho lưu trữ khóa-giá trị nâng cao, mã nguồn mở . Nó thường được gọi là máy chủ cấu trúc dữ liệu vì các khóa có thể chứa chuỗi, giá trị băm, danh sách, bộ và bộ được sắp xếp. Trước khi sử dụng Redis với Laravel, chúng tôi khuyến khích bạn cài đặt và sử dụng tiện ích mở rộng phpredis PHP thông qua PECL.