setelah mencari dan men-debug, inilah yang membuatnya bekerja:
'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'
],
]
]
catatan:satu kesalahan yang jelas dalam konfigurasi saya pada pertanyaan di atas adalah saya menggabungkan Host dan port, yang saya perbaiki di sini. seperti inilah tampilan file .env saya:
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
catatan:saya membuat cluster menggunakan petunjuk di sini:https://redis.io/topics/cluster-tutorial#creating-the-cluster
Metodologi Penelitian
Karena kenyataan bahwa:1. Dokumentasi laravel/predis tentang ini kurang2. Sebagian besar jawaban tentang stack overflow adalah sebagai berikut:setelah googling dan mencari.. inilah yang berhasil bagi saya tanpa banyak penjelasan tentang apa yang terjadi
Saya pikir saya dapat membantu sedikit dengan menunjukkan bagaimana Saya menemukan jawaban saya di atas.
1) Memecahkan masalah kesalahan
Untuk mengatasi bug ini
local.ERROR:Symfony\Component\Debug\Exception\FatalThrowableError:Type error:Argumen 1 diteruskan kePredis\Connection\Parameters::__construct() harus bertipe array,integer diberikan, dipanggil di/Users/Shared/dev/php /toters-api/vendor/predis/predis/src/Connection/Factory.phpon baris 164 in/Users/Shared/dev/php/toters-api/vendor/predis/predis/src/Connection/Parameters.php:34Stack trace :
Saya menyadari bahwa format config/database.php saya salah. Googling ke mana-mana tidak memberi saya gambaran yang jelas, jadi saya memutuskan untuk menggunakan xdebug dan menyelami kodenya. Catatan:Saya memiliki jejak tumpukan kesalahan (ditunjukkan dalam pertanyaan di atas) yang dicetak dalam satu dokumen, dan saya menggunakannya sebagai pandangan sekilas untuk memandu saya melalui langkah-langkah debug (yaitu melangkahi/ke/keluar dll sambil selalu mencetak output dalam dokumen terpisah dan membandingkannya dengan config/database.php saya sebagai kompas pemeriksaan/debug kewarasan).
Setelah menggali dan mencetak, saya menemukan ini:
[ *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)
/
Saya membandingkan ini dengan konten file .env saya:
REDIS_DEFAULT_HOST=127.0.0.1:7000
REDIS_JOBS_HOST=127.0.0.1:7001
REDIS_CONTENT_HOST=127.0.0.1:7002
dan saya menyadari bahwa formatnya salah, saya seharusnya tidak meletakkan host DAN port dalam variabel env yang sama.. jadi saya katakan seperti ini:
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
dan itu memecahkan masalah pertama saya.
2) memecahkan masalah lain
setelah hal di atas diperbaiki, saya mendapatkan ini
CLUSTERDOWN Slot hash tidak ditayangkan
ini cukup mudah, itu hanya masalah googling pesan kesalahan (karena pesan kesalahan jelas merupakan pesan kesalahan redis asli, daripada beberapa pembungkus perpustakaan samar seperti pesan kesalahan predis) .. dan saya menemukan jawaban ini.
Sisanya mudah.