java操作虚拟机中redis报错的解决

虚拟机安装Redis及Java连接问题解决
博客介绍了虚拟机安装Redis时的常见问题及解决办法。安装时make报错是因未装gcc,执行yum install gcc解决;make test报错需安装tcl。Java连接Redis出错,可能是防火墙限制或配置文件设置问题,可通过相应命令开启防火墙、修改配置文件来解决。
  1. 虚拟机安装redis时,执行命令make报错:

    cd src && make all

    make[1]: Entering directory '/xx/xx/redis-x.x.x/src这是没有安装gcc的原因,执行命令:yum install gcc即可,遇到输入的时候输入y即可。

  2. 执行命令make test报错You need tcl 8.5 or newer in order to run the Redis test,执行命令:yun install tcl即可。

  3. java连接虚拟机中的redis,地址为虚拟机的ip地址,端口号默认6379。连接时,提示连接错误,可能的原因有:(1)linux的防火墙限制,执行命令:firewall-cmd --zone=public --add-port=6379/tcp --permanent,提示FirewallD is not running,表示防火墙关闭了。开启防火墙命令:systemctl start firewalld,再执行上述命令,提示success表示成功。(2)redis-conf配置文件的设置。打开redis-conf,将bind 127.0.0.1注释掉,daemonize设置成no(默认no),protected-mode设置成no(默认yes)。重启redis服务,如遇到报错,kill -9 [进程ID] 将进程杀掉后重启。

### Redis Connection Refused 的解决方案 当遇到 `Connection refused` 错误时,通常意味着客户端无法成功建立到 Redis 服务器的 TCP 连接。这可能是由于配置不当或其他网络问题引起的。 #### 修改 Redis 配置文件 进入服务器上的 Redis 安装目录中的 conf 文件夹,找到并编辑 redis.conf 文件: 1. **禁用保护模式** 设置 `protected-mode` 参数为 `no` 可以允许来自任何 IP 地址的连接请求[^2]。 ```bash protected-mode no ``` 2. **取消绑定本地地址限制** 如果存在 `bind 127.0.0.1` 行,则应在该行前添加 `#` 符号来注释它,从而解除仅限于本机访问的约束条件。 ```bash # bind 127.0.0.1 ``` #### 检查防火墙设置 确认虚拟机或物理主机上的防火墙规则不会阻止外部设备尝试连接至指定端口(默认情况下为6379)。必要时可临时关闭防火墙服务来进行测试验证。 对于 Linux 系统而言,可以通过执行命令 `sudo systemctl stop firewalld.service` 来停止防火墙运行;而对于 Windows Server 用户来说,则需通过控制面板内的高级安全Windows Defender防火墙界面操作。 #### 正确管理 Jedis 实例池 针对多线程环境下频繁创建销毁Jedis实例的情况,建议采用连接池技术优化资源利用效率,并确保每个线程都能获得独立的对象副本而非共享单个实例[^3]。 ```java // 使用 JedisPool 初始化连接池 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig<>(); poolConfig.setMaxTotal(10); // 设定最大活跃数 JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379); try (Jedis jedis = jedisPool.getResource()) { String value = jedis.get("key"); } catch (Exception e) { logger.error(e.getMessage(), e); } ``` 以上措施能够有效缓解因不恰当配置所引发的一系列连接异常现象,提高系统的稳定性和可靠性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值