主机连不上CentOS7虚拟机Redis

CentOS7中的Redis连不上主机

是否ping通

先尝试主机是否能Ping通虚拟机
虚拟机中查看ens33对应的地址,使用ifconfig
在这里插入图片描述
再在主机上尝试Ping,如果无法Ping通,先排除是否是虚拟机NAT或者桥接模式配置的问题
在这里插入图片描述

redis.conf配置

我是按照黑马的教程安装的Redis,所以资源是在/usr/local/src/redis-6.2.6目录下,要修改这个目录下的redis.conf配置信息

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321
#关闭保护模式
protected-mode no

6379端口开启

然后使用查看默认使用的6379端口是否开启

6379端口是否开启
firewall-cmd --query-port=6379/tcp 如果是no则没有开启
firewall-cmd --zone=public --add-port=6379/tcp --permanent 永久开启端口

以修改好的配置文件重新启动redis
/usr/local/bin下使用redis-clishutdown命令
在这里插入图片描述

使用Java连接虚拟机中的Redis

导入依赖

<dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>3.6.0</version>
</dependency>

Java:

import redis.clients.jedis.Jedis;

public class RedisTest {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.59.128", 6379);
        jedis.auth("123369");
        System.out.println(jedis.ping());
    }
}

在这里插入图片描述

使用Another Redis Desktop Manager连接

在这里插入图片描述
没有弹错误提示窗口或者能看到存储内容,就是连接成功了
在这里插入图片描述

也可以尝试关闭防火墙,看是否能连接上
注意虚拟机中的ip地址会经常变换,连接前看看地址是否正确
常用的命令

黑马教程中查看redis的状态
systemctl status redis 
查看redis运行进程
ps -ef | grep redis
查看防火墙的状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
防火墙自启
systemctl enable firewalld.service
### 无法连接虚拟机中的 Redis 解决方案 在尝试通过可视化工具或其他方式连接虚拟机中的 Redis 数据库时,可能会遇到多种原因导致失败的情况。以下是综合多个引用内容以及专业知识总结的解决方案。 #### 1. 检查 Redis 配置文件 确保 Redis 的配置文件 `redis.conf` 已经进行了必要的调整以支持外部访问。具体操作如下: - **关闭保护模式** 修改 `protected-mode` 参数为 `no`,以便允许来自非本地网络的请求[^4]。 - **取消绑定 IP 地址限制** 如果存在 `bind 127.0.0.1` 行,则将其注释掉或将值更改为 `0.0.0.0`,从而允许任何 IP 地址访问 Redis 实例[^3][^4]。 - **重启 Redis 服务** 在完成上述更改后,需停止并重新启动 Redis 服务以使设置生效: ```bash systemctl restart redis ``` #### 2. 确认 Docker 容器内的 Redis 设置 如果 Redis 是运行在一个基于 Linux 的 Docker 容器中,还需要验证容器是否正确暴露了端口给主机,并确认宿主机上的防火墙不会阻止该流量[^2]。 - 查看当前正在使用的端口号及其映射关系: ```bash docker ps --filter ancestor=redis -q | xargs docker inspect --format='{{range .NetworkSettings.Ports}}{{.HostPort}} -> {{end}}' ``` - 若未显式指定 `-p` 或者 `--publish` 参数来发布端口至宿主机上,则需要更新启动脚本或者重建镜像实例[^5]。 #### 3. 停用或配置防火墙规则 某些情况下即使完成了以上步骤仍可能因为安全策略而遭到拒绝访问。因此建议临时禁用 CentOS 中默认启用的服务——firewalld 来测试连通性;当然也可以创建特定规则仅开放所需端口而非完全移除防护措施: ```bash # 方法一:永久停用 firewall 并保存状态 systemctl disable firewalld && systemctl stop firewalld # 方法二:添加例外规则保留基础防御功能的同时放行目标端口(此处假设为标准6379) firewall-cmd --zone=public --add-port=6379/tcp --permanent ; firewall-cmd --reload ; ``` #### 4. 测试网络可达性和客户端兼容情况 最后一步就是利用 telnet/ping 等手段检验是否存在实际通信障碍,同时注意不同平台间可能存在协议版本差异等问题影响正常握手过程[^1]. 对于 Python 应用程序而言可以通过以下简单代码片段初步判断能否成功建立会话链接: ```python import redis try: r = redis.StrictRedis(host='your_vm_ip', port=6379, db=0) response = r.ping() print(f"PING returned {response}") except Exception as e: print(e) ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值