0

I'm trying to do a PHP Redis connection. I explored the phpredis and the predis packages and didn't find a way to include the username and password URL connection string.

This is because I receive a environment variable of the redis connection string in this format: tls://{username}:{password}@{host}:{port}

I can change the order/format of the url string on the environment variable. How do I know the final format of the connection string used on phpredis ou predis? How can I indicate the username / password on the redis URL string, for the predis or phpredis?

I'm not restricted to predis or phpredis. I can use another if you have any suggestion.

1 Answer 1

1

Redis has the parameter requirepass for password and no parameter for user. Meaning I do not think a particular user is needed nor specified, unless you can verify otherwise.

You can convert the url to array params like so

[
  'host'     => parse_url($url, PHP_URL_HOST),
  'password' => parse_url($url, PHP_URL_PASS),
  'port'     => parse_url($url, PHP_URL_PORT),
  'database' => parse_url($url, PHP_URL_PATH),
]

To support your config in both local development and production you need something like this in you config/database.php

...
'default' => ($url = env('REDIS_URL'))
    ? [ // production config
        'host' => parse_url($url, PHP_URL_HOST),
        'password' => parse_url($url, PHP_URL_PASS),
        'port' => parse_url($url, PHP_URL_PORT),
        'database' => parse_url($url, PHP_URL_PATH),
    ]
    : [ // original local config
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD'),
        'port' => env('REDIS_PORT', 6379),
        'database' => env('REDIS_DB', 0),
    ],
...

Note, I assume your env variable is named REDIS_URL, please change that accordingly.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.