在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 redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate= new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
3. 在application.properties配置文件中:配置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配置的两个位置:
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
如果你觉得不好,请指正,希望每个人都可以遇见梦中的明天、