Redis的配置与SpringBoot整合Redis

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

(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<String, Object>。存在于IOC容器中的单例 Bean
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> 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

然后再执行上一条命令,返回yes,证明端口已经成功开启

猜你喜欢

转载自www.cnblogs.com/qiaohan9090/p/12927096.html