redis@6.2连接不上

如下图,在macos上 用brew 安装好redis@6.2后,用命令【`brew services restart redis@6.2】启动成功了,apache启动成功了,yii关闭redis就能访问,打开redis连接不上,php的redis扩展已安装了,就是连接不上(php7.4.3版本),访问被拒绝,好像找不到它,是否因为redis的名字后面多了个后缀,多了个@6.2导致的,请问怎么解决呢?

img

img

在 macOS 上,当使用 brew 安装了 Redis 后,可以通过 brew services 命令来启动 Redis 服务,这个过程中可以选择指定安装的 Redis 版本,例如:

brew services start redis@6.2

如果在启动 Redis 服务后,使用 PHP 的 Redis 扩展连接 Redis 服务失败,可能是 Redis 配置中绑定了特定的 IP 地址或者端口号,或者防火墙等原因导致连接被拒绝。在这种情况下,可以尝试以下几个步骤:

1 确认 Redis 服务已经启动成功,可以使用 brew services list 命令来检查 Redis 服务的状态。

2 确认 Redis 服务的配置文件中的 IP 地址和端口号配置是否正确。Redis 的配置文件一般在 /usr/local/etc/redis.conf 或者 /usr/local/etc/redis@6.2.conf(如果指定了版本号)路径下,可以使用 cat 命令查看 Redis 配置文件内容,例如:

cat /usr/local/etc/redis@6.2.conf

然后确认 bind 和 port 配置项是否设置正确,例如:

bind 127.0.0.1
port 6379

如果需要在外部连接 Redis 服务,可以将 bind 配置项改为对应的 IP 地址或者注释掉这个配置项。

3 确认防火墙或者网络配置是否阻止了 Redis 服务的连接。可以尝试关闭防火墙或者在防火墙中打开 Redis 服务对应的端口,例如在 macOS 上可以使用 pfctl 命令来修改防火墙设置。

希望这些方法可以帮助你解决连接 Redis 失败的问题。

如果对您有帮助,请给与采纳,谢谢。

有可能是那个后缀@6.2的问题,可以试试不要后缀,大概率是后缀的问题。

在 macOS 上,使用 brew 安装 Redis 后,Redis 默认绑定的是 127.0.0.1 这个 IP 地址,如果你的 PHP 代码是在本地运行的,就可以使用 127.0.0.1 作为 Redis 服务器的地址。如果 PHP 和 Redis 不在同一个机器上,那么需要使用 Redis 服务器的 IP 地址。

另外,关于 Redis 名字后面多了个后缀 @6.2 的问题,这是因为你安装了多个版本的 Redis,每个版本的 Redis 都有一个不同的名字。在启动 Redis 的时候,需要指定使用哪个版本的 Redis。如果你只安装了一个版本的 Redis,那么可以省略后缀 @6.2,直接使用 redis 命令即可。

如果你的 PHP 代码无法连接 Redis,可能有以下原因:

  1. Redis 服务器没有启动:你可以使用 brew services start redis@6.2 命令启动 Redis 服务器。
  2. Redis 服务器绑定的 IP 地址不正确:请确保 Redis 服务器绑定的 IP 地址和 PHP 代码中使用的 IP 地址相同。
  3. Redis 服务器的端口号不正确:Redis 服务器默认使用的端口号是 6379,如果你修改了 Redis 服务器的端口号,请确保 PHP 代码中使用的端口号和 Redis 服务器的端口号相同。
  4. PHP 没有安装 Redis 扩展或者 Redis 扩展没有正确配置:请检查你的 PHP 环境,确保已经安装了 Redis 扩展,并且在 PHP 配置文件中正确配置了 Redis 服务器的地址和端口号。

希望以上提示能够帮助你解决问题。

看看是不是防火墙问题,检查一下防火墙设置是否允许Redis服务的端口通过。也可能是PHP Redis扩展问题,确认一下PHP的Redis扩展是否正确安装,并且是否加载了该扩展。

多了个后缀符号@,参考:https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/

在macOS上使用brew安装redis后,redis服务的名称可能会带有版本号后缀,例如 redis@6.2。因此,在连接到redis时,需要使用正确的名称。您可以通过以下方法检查redis的名称和状态:

  1. 执行 brew services list 命令来列出所有已安装的服务及其状态。
  2. 检查redis服务的名称,应该是 redis@6.2,如果名称不同,请使用正确的名称。
  3. 检查redis服务的状态,应该是 started。如果状态为 stopped,请执行 brew services start redis@6.2 命令启动redis服务。
  4. 在php中连接redis时,使用正确的主机名和端口。默认情况下,redis会在本地监听端口 6379,因此可以尝试使用 localhost:6379127.0.0.1:6379 进行连接。

以下是一个简单的php示例代码,用于连接redis并执行一些基本操作:

php

<?php
$redis = new Redis();

// 连接redis
$redis->connect('127.0.0.1', 6379);

// 执行一些操作
$redis->set('foo', 'bar');
echo $redis->get('foo');

// 关闭连接
$redis->close();
?>

请确保您已在php中正确安装了redis扩展,可以通过执行 php -m | grep redis 命令来检查是否已安装redis扩展。

在macOS上通过Homebrew安装Redis时,确实会自动在Redis名称后面加上一个版本号后缀,比如 redis@6.2,这是因为在macOS上可能需要同时安装多个不同版本的Redis,所以需要区分不同版本的Redis实例。

如果您已经通过brew services restart redis@6.2成功启动了Redis服务,但是PHP的Redis扩展连接不上Redis实例,可能是因为PHP的Redis扩展配置文件中没有正确配置Redis实例的地址和端口。

您可以检查PHP的Redis扩展配置文件(通常是 redis.ini 或者 redis.so 文件),查看其中是否正确设置了Redis实例的地址和端口,比如:
extension=redis.so
redis.host = 127.0.0.1
redis.port = 6379
其中 redis.host 和 redis.port 参数需要根据实际情况进行配置,确保与Redis实例启动时的地址和端口一致。

如果您的PHP应用程序是在Apache上运行的,还需要确保Apache启动时已经加载了PHP的Redis扩展。您可以通过在PHP代码中调用 phpinfo() 函数来检查是否已经加载了Redis扩展。

另外,如果您的Redis实例运行在本机(即 127.0.0.1 或者 localhost),还需要确保防火墙或者其他安全软件没有阻止Redis客户端连接Redis服务。您可以尝试使用命令行工具(比如 redis-cli)来连接Redis实例,如果连接成功,则说明Redis服务已经正常运行,并且问题可能出在PHP的Redis扩展配置中。如果无法连接Redis实例,则需要检查防火墙或者其他安全软件是否阻止了连接。

根据您提供的信息,可能是Redis配置中监听IP地址或端口不正确导致的。建议检查一下Redis的配置文件 /usr/local/etc/redis.conf 中的 bind 和 port 参数是否正确设置为您所期望的IP地址和端口。

具体操作步骤如下:

1.打开终端,输入命令 cd /usr/local/etc/ 切换到Redis配置文件目录。
2.输入命令 ls 列出目录下的文件列表,确认是否存在 redis.conf 文件。
3.打开 redis.conf 文件,找到并检查 bind 和 port 参数是否正确设置。
4.如果需要更改参数,可以使用文本编辑器打开文件,修改参数后保存文件。
5.重新启动Redis服务,输入命令 brew services restart redis@6.2 重启Redis服务。
如果仍然无法连接,请确认Redis服务是否在运行,并尝试使用telnet命令连接Redis服务。具体操作步骤如下:

1.打开终端,输入命令 telnet IP地址 端口号,其中IP地址和端口号需要替换为Redis服务的实际IP地址和端口号。
2.如果连接成功,会看到一个空白的终端窗口,说明Redis服务正在运行。
3.如果连接失败,可能是Redis服务没有启动或者防火墙阻止了连接,需要进一步排查原因。
希望这些信息能帮助您解决问题。

您提到在 MacOS 上使用 Brew 安装 Redis@6.2 后,无法通过 PHP Redis 扩展连接 Redis。这可能是由于 Redis 绑定了本地 IP 地址而导致的。您可以尝试以下几种方法:

1.检查 Redis 的配置文件:您可以使用命令 brew services edit redis@6.2 来编辑 Redis 的配置文件,检查配置文件中的 bind 选项是否设置为 127.0.0.1 或 localhost。如果是,请将其修改为 0.0.0.0,以允许从任何 IP 地址访问 Redis。

2.检查 PHP Redis 扩展:您可以通过运行命令 php --ri redis 来检查 PHP Redis 扩展是否已正确安装。确保您使用的是与 Redis 服务器版本兼容的扩展版本。另外,您还可以检查 PHP 配置文件中的 Redis 扩展选项,例如 redis.default_host 是否设置为正确的 IP 地址和端口号。

3.检查防火墙设置:如果您使用的是 MacOS 自带的防火墙,请检查是否已允许 Redis 服务器的端口通过防火墙。您可以通过运行命令 sudo pfctl -s rules 来查看防火墙规则,并使用 sudo pfctl -a com.apple/250.Redis -f /etc/pf.conf 来添加规则允许 Redis 通过防火墙。

如果上述方法仍然无法解决问题,请尝试在 MacOS 上使用 Redis CLI 工具连接 Redis,以确定问题是否出现在 PHP Redis 扩展中。如果 Redis CLI 工具也无法连接 Redis,请检查 Redis 服务器是否已正确安装并正在运行,并检查网络连接是否正常。

可以尝试把redis的名字改成不带@6.2的,然后重新启动redis,再尝试连接。另外,也可以参考Yii的官方文档,查看具体的配置方法:https://www.yiiframework.com/doc/guide/2.0/en/caching-data#redis

你把你的redis.conf配置文件配置放出来,看看,redis IP是不是绑定了127.0.0.1,或者你主动绑定下你的管理口,然后用redis-cli访问一下试试。

如果不是防火墙的话,你看下你的6379端口号是不是accept的