sau khi tìm kiếm và gỡ lỗi, đây là những gì đã làm cho nó hoạt động:
'redis' => [
'client' => 'predis',
'cluster' => true,
'options' => [
'cluster' => 'redis',
'parameters' => [
'host' => env('REDIS_DEFAULT_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_DEFAULT_PORT', 6379),
'database' => 0,
],
],
'clusters' => [
'default' => [
'host' => env('REDIS_DEFAULT_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_DEFAULT_PORT', 6379),
'database' => 0,
],
'jobs' => [
'host' => env('REDIS_JOBS_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_JOBS_PORT', 6379),
'database' => 0,
],
'content' => [
'host' => env('REDIS_CONTENT_HOST', '127.0.01'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_CONTENT_PORT', 6379),
'database' => 0,
],
'options' => [
'cluster' => 'redis'
],
]
]
lưu ý:một lỗi rõ ràng trong cấu hình của tôi trong câu hỏi trên là tôi đã kết hợp máy chủ và cổng, tôi đã sửa ở đây. đây là tệp .env của tôi trông như thế nào:
REDIS_DEFAULT_HOST=127.0.0.1
REDIS_JOBS_HOST=127.0.0.1
REDIS_CONTENT_HOST=127.0.0.1
REDIS_DEFAULT_PORT=7000
REDIS_JOBS_PORT=7001
REDIS_CONTENT_PORT=7002
lưu ý:tôi đã tạo cụm bằng cách sử dụng hướng dẫn tại đây:https://redis.io/topics/cluster-tutorial#creating-the-cluster
Phương pháp nghiên cứu
Do thực tế là:1. Tài liệu laravel / predis về vấn đề này còn thiếu2. Hầu hết các câu trả lời về tràn ngăn xếp đều nằm dọc theo những dòng sau: sau khi googling và tìm kiếm .. đây là điều đã giải quyết được cho tôi mà không cần giải thích nhiều về những gì đang xảy ra
Tôi nghĩ rằng tôi có thể giúp một chút bằng cách chỉ ra cách thức Tôi đã tìm thấy câu trả lời của mình cho những điều trên.
1) Giải quyết vấn đề lỗi
Để giải quyết lỗi này
local.ERROR:Symfony \ Component \ Debug \ Exception \ FatalThrowableError:Lỗi loại:Đối số 1 được chuyển tớiPredis \ Connection \ Parameters ::__ construct () phải thuộc kiểu mảng, số nguyên được cho, được gọi trong / Users / Shared / dev / php /toters-api/vendor/predis/predis/src/Connection/Factory.phpon dòng 164 trong / Users / Shared / dev / php / toters-api / provider / predis / predis / src / Connection / Parameters.php:34 Stack trace :
Tôi nhận ra rằng định dạng config / database.php của tôi chỉ đơn giản là sai. Googling trên tất cả không cho tôi bất kỳ hình ảnh rõ ràng nào, vì vậy tôi quyết định sử dụng xdebug và đi sâu vào mã. Lưu ý:Tôi đã in dấu vết ngăn xếp lỗi (được hiển thị trong câu hỏi ở trên) trong một tài liệu và tôi đã sử dụng tài liệu đó làm chế độ xem toàn cảnh để hướng dẫn tôi qua các bước gỡ lỗi (tức là bước qua / vào / ra, v.v. trong khi luôn in kết quả đầu ra trong một tài liệu riêng biệt và so sánh nó với config / database.php của tôi như một la bàn kiểm tra / gỡ lỗi sanity).
Sau khi tìm hiểu và tìm hiểu về printig, tôi nhận ra điều này:
[ *Locals ] [ Superglobals ] [ User defined constants ]
- Locals at /Users/Shared/dev/php/toters-api/vendor/predis/predis/src/Client.php:55
▾ $options = (array [1])
\
⬦ $options["cluster"] = (string [5]) `redis`
/
▾ $parameters = (array [4])
\
⬦ $parameters[0] = (string [14]) `127.0.0.1:7000`
|
⬦ $parameters[1] = (null)
|
⬦ $parameters[2] = (int) 6379
|
⬦ $parameters[3] = (int) 0
/
▾ $this = (Predis\Client [3])
\
⬦ $this->connection = (null)
|
⬦ $this->options = (null)
|
⬦ $this->profile = (null)
/
Tôi đã so sánh điều này với nội dung tệp .env của mình:
REDIS_DEFAULT_HOST=127.0.0.1:7000
REDIS_JOBS_HOST=127.0.0.1:7001
REDIS_CONTENT_HOST=127.0.0.1:7002
và tôi nhận ra rằng định dạng không đúng, tôi không nên đặt cổng AND của máy chủ lưu trữ trong cùng một biến env .. vì vậy thay vào đó tôi đặt nó như vậy:
REDIS_DEFAULT_HOST=127.0.0.1
REDIS_JOBS_HOST=127.0.0.1
REDIS_CONTENT_HOST=127.0.0.1
REDIS_DEFAULT_PORT=7000
REDIS_JOBS_PORT=7001
REDIS_CONTENT_PORT=7002
và điều đó đã giải quyết được vấn đề đầu tiên của tôi.
2) giải quyết các vấn đề khác
sau khi phần trên được sửa, tôi nhận được cái này
CLUSTERDOWN vùng băm không được phân phát
điều này khá dễ dàng, nó chỉ là vấn đề của googling thông báo lỗi (vì thông báo lỗi rõ ràng là thông báo lỗi redis gốc, chứ không phải là một số trình bao bọc thư viện khó hiểu như thông báo lỗi predis) .. và tôi đã tìm thấy câu trả lời này.
Phần còn lại thật dễ dàng.