efter sökning och felsökning är det detta som fick det att fungera:
'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'
],
]
]
notera:ett uppenbart misstag i min konfiguration i ovanstående fråga var att jag kombinerade värden och porten, vilket jag fixade här. så här ser min .env-fil ut:
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
Obs:Jag skapade klustret med hjälp av instruktionerna här:https://redis.io/topics/cluster-tutorial#creating-the-cluster
Forskningsmetodik
På grund av det faktum att:1. Laravel/predis-dokumentationen om detta saknas2. De flesta av svaren på stack overflow är enligt följande:efter att ha googlat och sökt... det här är vad som löste sig för mig utan mycket förklaring av vad som händer
Jag tänkte att jag kan hjälpa till lite genom att visa hur Jag hittade mitt svar på ovanstående.
1) Lösa felproblemet
För att lösa detta fel
local.ERROR:Symfony\Component\Debug\Exception\FatalThrowableError:Typfel:Argument 1 skickas till Predis\Connection\Parameters::__construct() måste vara av typen array,heltal givet, anropat in/Users/Shared/dev/php /toters-api/vendor/predis/predis/src/Connection/Factory.phpon linje 164 in/Users/Shared/dev/php/toters-api/vendor/predis/predis/src/Connection/Parameters.php:34Stackspårning :
Jag insåg att mitt config/database.php-format helt enkelt var fel. Att googla överallt gav mig ingen tydlig bild, så jag bestämde mig för att använda xdebug och dyka in i koden. Notera:Jag lät skriva ut felstackspårningen (visas i frågan ovan) i ett dokument, och jag använde det som ett fågelperspektiv för att guida mig genom felsökningsstegen (dvs. att gå över/in/ut osv medan jag alltid skrev ut utdata i ett separat dokument och jämför det med min config/database.php som en förnuftskontroll/felsökningskompass).
Efter att ha grävt och skrivit ut kom jag på detta:
[ *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)
/
Jag jämförde detta med innehållet i min .env-fil:
REDIS_DEFAULT_HOST=127.0.0.1:7000
REDIS_JOBS_HOST=127.0.0.1:7001
REDIS_CONTENT_HOST=127.0.0.1:7002
och jag insåg att formatet var fel, jag borde inte lägga värden OCH porten i samma env-variabel.. så jag satte det så istället:
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
och det löste mitt första problem.
2) lösa de andra problemen
efter att ovanstående fixats fick jag detta
CLUSTERDOWN Hash-plats har inte serverats
det här var ganska enkelt, det var bara en fråga om att googla felmeddelandet (eftersom felmeddelandet uppenbarligen var ett inbyggt redis-felmeddelande, snarare än något kryptiskt biblioteksomslag som predis-felmeddelande).. och jag hittade det här svaret.
Resten var lätt.