如下图,在macos上 用brew 安装好redis@6.2后,用命令【`brew services restart redis@6.2】启动成功了,apache启动成功了,yii关闭redis就能访问,打开redis连接不上,php的redis扩展已安装了,就是连接不上(php7.4.3版本),访问被拒绝,好像找不到它,是否因为redis的名字后面多了个后缀,多了个@6.2导致的,请问怎么解决呢?
在 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的问题,可以试试不要后缀,大概率是后缀的问题。
如果你的 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的名称和状态:
- 执行
brew services list
命令来列出所有已安装的服务及其状态。- 检查redis服务的名称,应该是
redis@6.2
,如果名称不同,请使用正确的名称。- 检查redis服务的状态,应该是
started
。如果状态为stopped
,请执行brew services start redis@6.2
命令启动redis服务。- 在php中连接redis时,使用正确的主机名和端口。默认情况下,redis会在本地监听端口
6379
,因此可以尝试使用localhost:6379
或127.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的