解决 windows本地Java项目访问虚拟机中redis服务 访问不成功问题

本文介绍如何配置Redis以允许远程访问,包括在虚拟机中设置IP地址、修改Redis配置文件及开启CentOS系统的6379端口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、先在本地 ping 一下能否与虚拟机进行连接

在虚拟机的终端输入 ifconfig 即可查看ip地址

在这里插入图片描述

能正常进行连接后再执行下一步

2、进入 redis-config 文件 修改bind ,在其后面追加 虚拟机的ip地址

在这里插入图片描述

3、开启CentOS的6379端口

输入firewall-cmd --query-port=6379/tcp,如果返回结果为no,那么证明6379端口确实没有开启。
在这里插入图片描述

输入firewall-cmd --add-port=6379/tcp,将6379端口开启,返回success
注意这里 = 前后不能带空格 , 带了的话就…

firewall-cmd: error: unrecognized arguments: 6379/tcp

然后再执行上一条命令,返回yes,证明端口已经成功开启。
在这里插入图片描述

<think>嗯,用户想知道在Spring Boot项目里怎么配置Redisson来连接虚拟机上的Redis作为分布式锁。首先,我需要理清楚Redisson的基本配置方式,然后考虑虚拟机环境下的特殊情况。 首先,Redisson通常是通过Config类来配置的,可能需要设置单节点或者集群模式。这里用户提到Redis部署在虚拟机,应该是指单实例的情况,所以应该用单节点配置。用户可能用的是单机模式,那需要指定Redis的地址、端口,可能还有密码和数据库号。 接下来,虚拟机上的Redis,需要注意网络连接问题。比如虚拟机的IP是否正确,端口是否开放,防火墙有没有阻止访问。可能用户会遇到连接Redis问题,所以配置的时候要确保地址正确,比如redis://虚拟机的IP:6379。如果虚拟机使用NAT,可能需要映射端口,或者检查主机的网络设置。 然后,Spring Boot项目中,通常会用Redisson的starter,或者手动配置RedissonClient的Bean。用户可能需要一个配置类,里面创建RedissonClient实例,并设置好连接参数。需要提醒用户检查pom.xml是否引入了redisson-spring-boot-starter依赖,或者相应的Redisson库。 还有,可能要考虑密码的情况,如果Redis设置了requirepass,配置里需要加上setPassword。数据库编号如果用了非0的库,也要设置setDatabase。另外,连接池的大小或者超时时间,用户可能需要根据实际情况调整,比如setConnectTimeout。 然后,测试连接是否成功,可以通过编写一个测试用例,或者启动项目后查看日志,看是否有连接错误。常见的错误比如连接超时,可能是防火墙问题,或者地址端口错误;认证失败可能是密码对;还有可能Redis配置文件中绑定了127.0.0.1,需要改成0.0.0.0允许外部连接。 可能还需要提醒用户,虚拟机的网络模式,比如桥接模式还是NAT,会影响IP地址的访问方式。如果是NAT,可能需要端口转发,比如在VirtualBox或VMware中配置端口转发规则,把宿主机的端口映射到虚拟机的6379端口。 另外,如果Redisson的配置类正确加载,需要确保在Spring的配置中正确初始化RedissonClient的Bean,可能通过@Configuration注解,然后在需要的地方注入RedissonClient。 总结一下,步骤应该是:添加依赖,创建配置类,设置单节点地址、端口、密码等,处理虚拟机网络问题,测试连接。同时,用户可能需要检查Redis的配置文件和宿主机的防火墙设置,确保外部可以访问虚拟机Redis服务。在</think>Spring Boot项目中使用Redisson连接虚拟机上的Redis,需通过配置类设置Redisson的连接参数。以下是具体步骤和示例代码: --- ### 1. 添加依赖 在`pom.xml`中添加Redisson和Redis依赖: ```xml <dependency> <groupId>org.redisson</groupId> <artifactId>redisson-spring-boot-starter</artifactId> <version>3.23.4</version> <!-- ### 2. 配置Redisson连接参数 在`application.yml`中配置Redis地址、密码等基本信息: ```yaml spring: redis: host: 虚拟机IP地址(如192.168.1.100) port: 6379 password: 你的密码(若无密码则删除此行) database: 0 ``` --- ### 3. 编写Redisson配置类 创建`RedissonConfig.java`,通过`Config`对象配置Redisson: ```java import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RedissonConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private String redisPort; @Value("${spring.redis.password}") private String redisPassword; @Bean(destroyMethod = "shutdown") public RedissonClient redissonClient() { Config config = new Config(); // 单节点模式配置 config.useSingleServer() .setAddress("redis://" + redisHost + ":" + redisPort) .setPassword(redisPassword) // 如果无密码则省略此行 .setDatabase(0) .setConnectTimeout(10000); // 连接超时时间(可选) return Redisson.create(config); } } ``` --- ### 4. 验证网络和权限 确保以下条件满足: 1. **虚拟机网络可访问**:确保宿主机能访问虚拟机的IP(如`ping 192.168.1.100`)。 2. **Redis端口开放**:检查虚拟机防火墙是否开放6379端口: ```bash sudo ufw allow 6379/tcp ``` 3. **Redis绑定设置**:修改Redis配置文件(`redis.conf`): ```ini bind 0.0.0.0 # 允许所有IP连接 protected-mode no # 关闭保护模式(生产环境谨慎使用) requirepass your_password # 设置密码(可选) ``` --- ### 5. 使用分布式锁示例 在Service中注入`RedissonClient`并使用锁: ```java import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class LockService { @Autowired private RedissonClient redissonClient; public void doSomethingWithLock() { RLock lock = redissonClient.getLock("myLock"); try { lock.lock(); // 执行需要加锁的业务逻辑 System.out.println("锁已获取,执行业务..."); } finally { lock.unlock(); } } } ``` --- ### 常见问题排查 - **连接超时**:检查虚拟机IP、端口是否正确,防火墙是否放行。 - **认证失败**:检查密码是否匹配,或在配置中移除密码配置。 - **无法访问Redis**:在宿主机执行`telnet 虚拟机IP 6379`测试连通性。 通过以上步骤,即可在Spring Boot中通过Redisson连接虚拟机Redis实现分布式锁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值