近期学习SpringBoot整合Redis , 总结了一些Springboot连接Redis数据库的问题, 以备再犯
Redis 配置文件
- 注释掉默认的 bind
- 关闭安全检查模块 protected-mode
- 配置Redis访问密码
- 修改完配置文件需要重启Redis 使配置生效
ps: 用编辑器搜索bind 等关键字 , Linux下 vi 编辑器用 /bind
# bind 127.0.0.1 -::1
//1.注释掉 , 这样这个redis不会限于本机访问, 可以远程访问
protected-mode no
//2.此处修改成no , 关闭保护模块
#3. '#' requirepass foobared
requirepass 123456
//3. 设置密码 , 云端更为必要,甚至要复杂一些, 本地虚拟机可以不设置
//4. 重启Redis生效
Linux防火墙&服务器安全组
- 放行Linux 防火墙的6379端口
- 如果使用云服务器安装的Redis 不仅要放开Linux6379端口也要放行安全组6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
SpringBoot方面
- yml配置文件
spring:
# redis
redis:
host: 192.168.8.188
port: 6379
timeout: 3
password: 123456 # 如果配置了密码一定要写 ,不然报错
pool:
minIdle: 1 # 最小空闲连接数(默认为0,该值只有为正数才有用)
maxIdle: 10 # 最大空闲连接数(默认为8,负数表示无限)
maxWait: 3 # 从连接池中获取连接最大等待时间(默认为-1,单位为毫秒,负数表示无限)
maxActive: 8 # 最大可用连接数(默认为8,负数表示无限)
- StringRedisTemplate 的注解使用
原因 : @Autowired是以类型注入 , @Resource 是优先基于名称注入
StringRedisTemplate 是RedisTemplate的子类 , 如果按照类型注入
会报错
//正确的用法
@Resource
private StringRedisTemplate stringRedisTemplate;
//错误的用法
@Autowired
private StringRedisTemplate stringRedisTemplate;
//还有一种写法也可以执行
@Autowired
@Qualifier("stringRedisTemplate")
private StringRedisTemplate stringRedisTemplate;