SpringBoot远程连接Redis

SpringBoot远程连接Redis

第一引入依赖:



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


org.apache.commons
commons-pool2
2.6.0

第二配置文件:

spring.redis.host=xxx.xx.xxx.xx
spring.redis.port=6379
spring.redis.password=
spring.redis.database= 0
spring.redis.timeout=1800000spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1
#最大阻塞等待时间(负数表示没限制)
spring.redis.lettuce.pool.max-idle=5
spring.redis.lettuce.pool.min-idle=0

第三步配置类:

@Configuration
@EnableCaching   //开启缓存
public class RedisConfig {/*** 自定义key规则* @return
*/
@Bean  //创建一个对象
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object target, Method method, Object... params) {StringBuilder sb = new StringBuilder();sb.append(target.getClass().getName());sb.append(method.getName());
for (Object obj : params) {sb.append(obj.toString());}
return sb.toString();}};}/*** 设置RedisTemplate规则* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(redisConnectionFactory);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);//解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);//序列号key value
redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();
return redisTemplate;}/*** 设置CacheManager缓存规则* @param factory
* @return
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {RedisSerializer redisSerializer = new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);//解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);// 配置序列化(解决乱码的问题),过期时间600秒
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(600)).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)).disableCachingNullValues();RedisCacheManager cacheManager = RedisCacheManager.builder(factory).cacheDefaults(config).build();
return cacheManager;}
}

关于 redis.conf 配置文件的修改:

vim redis.conf后输入:/可以快速搜索)

1、注释掉只能本机访问的 bind 127.0.0.1

2、取消保护模式 protected-mode yes 改为no

3、是否为后台进程(运行)daemonize no 改为 yes

4、redis端口6379被恶意攻击,导致xshell登录ssh验证失败或者持续等待问题一定要设置redis密码增强防护

requirepass foobared 改成 requirepass 你的密码

设置密码后下次客户端登录输入完redis-cli命令后再执行 auth 密码

开放端口

开放端口:

firewall-cmd --add-port=6379/tcp --permanent

重启防火墙:

firewall-cmd --reload

查看6379防火墙状态

firewall-cmd --zone=public --query-port=6379/tcp

image-20220214161635026

重启防火墙:

firewall-cmd --reload

查看6379防火墙状态

firewall-cmd --zone=public --query-port=6379/tcp

这样就可以了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部