Redis的配置与SpringBoot整合Redis

2021-01-16 07:11

阅读:562

标签:终端   return   yml   直接   ble   eth   安装   mod   config   

1.Redis的安装

这里不详细介绍Redis的安装过程,相信大家也很容易搜到的。Redis安装可以参考 https://www.cnblogs.com/limit1/p/9045183.html

2.SpringBoot整合Redis

(1)配置 application.properties或者是application.yml,这两个都是springBoot默认的配置文件(在resources目录下)

application.yml配置如下:

server:
port: 8080

spring:
redis:
# Redis数据库索引(默认为0)
database: 0
# redis服务器地址
host: 192.168.23.131
# redis服务器连接端口
port: 6379
# redis服务器连接密码(默认为空)
password:
# 连接超时时间(毫秒)
timeout: 5000

pool:
# 连接池最大连接数(负值表示没有限制)
max-active: 200
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接池最大空闲连接
max-idle: 10
# 连接池最小空闲连接
min-idle: 0

application.properties:

# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=20
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=1000

 

(2)编写配置类,代码如下

/**
 * @Author qiaohan
 * @Date 2020/5/20 14:25
 * @Description redis配置类
 */
@Configuration
public class RedisConfiguration {

    /**
     * 创建 RedisTemplate Bean
     * Bean需要在@Configuration注解下进行创建,产生这个Bean对象的方法Spring只会调用一次,随后放入Spring IOC 容器中
     * @param factory RedisConnectionFactory。Spring会将入参根据类型注入,若存在多个根据名称匹配,找不到会报错
     * @return RedisTemplate。存在于IOC容器中的单例 Bean
     */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(factory);
        Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        //om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
                                 ObjectMapper.DefaultTyping.NON_FINAL,
                                 JsonTypeInfo.As.PROPERTY);
        serializer.setObjectMapper(om);
        StringRedisSerializer srSerializer = new StringRedisSerializer();
        // key采用String的序列化方式
        redisTemplate.setKeySerializer(srSerializer);
        // hash的key也采用String的序列化方式
        redisTemplate.setHashKeySerializer(srSerializer);
        // value序列化方式采用jackson
        redisTemplate.setValueSerializer(serializer);
        // hash的value序列化方式采用jackson
        redisTemplate.setHashValueSerializer(serializer);
        redisTemplate.afterPropertiesSet();

        return redisTemplate;
    }

}
说明:
从代码中可以看到,ObjectMapper.setVisibility()方法已经废弃了,一般废弃的方法都会有相应的替代方法,查看源码可以发现给出了替代的方法,这里采用的是
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
                                 ObjectMapper.DefaultTyping.NON_FINAL,
                                 JsonTypeInfo.As.PROPERTY);

技术图片

3.Redis配置

一般情况下,Redis安装好后并不能被其它服务直接访问,springBoot连接redis会报错:

org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.

RedisConnectionException: Unable to connect to 192.168.23.131:6379

验证:通过cmd telnet命令测试端口是否畅通

技术图片

需要进行相应的配置

(1)关闭redis保护模式

进入redis安装目录,编辑redis配置文件

技术图片

 输入命令:vim redis.conf

将 bind 127.0.0.1 注释掉,protected-mode修改为no

技术图片

 (2)到Linux终端输入命令:

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

如果返回no,那么证明6379端口确实没有开启

输入 firewall-cmd --add-port=6379/tcp,将6379端口开启,返回success

然后再执行上一条命令 firewall-cmd --query-port=6379/tcp,返回yes,证明端口已经成功开启

技术图片

 (3)这个时候我们再次 telnet,发现redis的7379端口还是不通

技术图片

 

 输入Linux命令:

ps -ef | grep redis

技术图片

 

 发现redis 6379端口服务是开启的,只不过ip是127.0.0.1,只能本机使用,外部无法访问

 

 

Linux关闭redis

可通过杀进程的方式强制关闭redis

netstat -nltp

找到 redis的PID

kill -9 pid

技术图片

 

Redis的配置与SpringBoot整合Redis

标签:终端   return   yml   直接   ble   eth   安装   mod   config   

原文地址:https://www.cnblogs.com/qiaohan9090/p/12927096.html


评论


亲,登录后才可以留言!