SpringBoot整合Redis,连接超时及其解决方案

在Spring Boot中整合redis的步骤:

1.引入redis的starters

org.springframework.boot spring-boot-starter-data-redis

2. 写配置类,注入名为redisTemplate的bean

@Configuration
public class RedisConfig {

    /**
     * 向容器注入名称为方法名的(redisTemplate)bean
     * @return
     */
    @Bean
    public RedisTemplate<String,String> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate<String,String>  redisTemplate= new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return  redisTemplate;
    }
}

3. 在application.properties配置文件中:配置redis的连接信息

redis配置信息

# redis服务主机地址(一般是Linux内网地址ip)
#如果redis和开发工具安装在同一个系统下,可以直接使用localhost
#如果redis开启在linux虚拟机上,而开发工具安装在windwo,则要查询Linux虚拟机ip(ifconfig)
spring.redis.host=192.168.44.128
#spring.redis.host=localhost

redis服务端口号

spring.redis.port=6379
spring.redis.database=0
#登录redis服务的密码
spring.redis.password=

4. 使用redisTemplate操作api.

@RestController
public class RedisController {

@Resource
private RedisTemplate  redisTemplate;


@RequestMapping("/redis/setAndGet")
public String setAndGet( String name,String value){
    //给redis存放string类型的key和value
    redisTemplate.opsForValue().set(name,value);
    return (String) redisTemplate.opsForValue().get(name);

}

5.启动主配置类访问:结果一直报错:redis connect to to 192.168.22.148(本地linux虚拟机地址)失败,如下:

首先,介绍我的项目环境:

当前项目位于本地window环境中,使用idea作为开发工具;而Redis对应的服务位于本地虚拟机上,所以在配置文件中关于Redis的host地址要写虚拟机ip。但是访问超时。于是就着手解决这个问题,根据一些博客的经验介绍:解决方案如下:

1.修改redis.conf配置的两个位置:

接着找到redis的配置文件redis.conf,直接进入配置文件:

vim redis.conf

找到 protected-mode no,修改成yes

protected-mode no → protected-mode yes

2.在linux系统上,开放redis的6379端口:

1>进入配置文件:vim /etc/sysconfig/iptables

2>添加想要放开的端口:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

3>退出保存iptables,并重启iptables

service iptables restart

此时,再启动idea 中的springboot就可以访问到redis.问题的解决,总是充满愉悦啊!

补充一点,在一篇博客中针对我们这种情况(我们这种情况是指:项目开发在window系统,而Redis又在远程或者虚拟机中。如果你完全使用的mac环境开发,其实不会有这样的问题的)提供了一个很好的验证方案:

详情地址链接如下:https://blog.csdn.net/DragonFreedom/article/details/79512686

简单的说就是:

要测试有没有通,不用你一直跑代码,很麻烦,直接使用win的telnet,进入cmd,命令如下:

telnet host port

这是我在解决问题过程中,一直测试端口是否可用。这个命令很有用。

当输入:telnet linux ip redis 的6378端口号,如:telnet 192.168.xx.111 6379 ,有反应且进入一个什么都没有的窗口,表示这个端口后可用访问;否则如果这个端口还是没有被放开或者拒绝访问,提示信息如上图。

解决方案参考了一些问题,感谢各位大佬:

https://blog.csdn.net/symsym_keepGoing/article/details/100609100?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

https://blog.csdn.net/DragonFreedom/article/details/79512686

https://blog.csdn.net/qq_41988504/article/details/85322022?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

https://blog.csdn.net/azhong148/article/details/79677049

https://ask.csdn.net/questions/386710?locationNum=11&fps=1

如果你觉得不好,请指正,希望每个人都可以遇见梦中的明天、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值