PHP Laravel - Redis连接使用URL访问用户和传递

uhry853o  于 9个月前  发布在  Redis
关注(0)|答案(1)|浏览(100)

我正在尝试做一个PHP Redis连接。我研究了phpredis和predis包,没有找到包含用户名和密码URL连接字符串的方法。
这是因为我收到了一个redis连接字符串的环境变量,格式如下:tls://{username}:{password}@{host}:{port}
我可以在环境变量上更改url字符串的顺序/格式。我如何知道phpredis或predis上使用的连接字符串的最终格式?我如何在redis URL字符串中指定predis或phpredis的用户名/密码?
我不局限于predis或phpredis。如果你有什么建议,我可以用另一个。

soat7uwm

soat7uwm1#

Redis有参数requirepass表示密码,没有参数表示用户。这意味着我不认为需要或指定特定的用户,除非您可以验证。
你可以像这样把url转换成数组参数

[
  '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),
]

为了在本地开发和生产中支持您的配置,您需要在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),
    ],
...

注意,我假设你的env变量名为REDIS_URL,请相应地更改它。

相关问题