Spring Boot 整合 Redis 并设置序列化类型

1.Spring Boot 整合 Redis

1.1 导入依赖

如果在创建 Spring Boot 项目的时候没有考虑过使用 redis ,而后期要用 redis 的话。导入下面一个依赖就可。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

1.2 配置链接属性

配置 redis 属性,用 application.xml 和 application.yml 都可以。这里我使用的是更简洁的 application.yml。

spring:
    redis:
      host: 127.0.0.1 #ip
      database: 0 #数据库名称,默认 db0
      password: 123456789 #密码
      port: 6379 ¥端口
      jedis:
        pool: #链接池设置
          max-idle: 8
          min-idle: 0
          max-active: 8

1.3 使用

RedisAutoConfiguration 为我们默认配置了 JedisConnectionFactory,RedisTemplate 以及 StringRedisTemplate,让我们可以直接的使用 Redis 作为数据储存。

    @Resource
    private RedisTemplate redisTemplate;

    @Resource
    private StringRedisTemplate stringRedisTemplate;

String Data Redis 为我们提供了 RedisTemplate 和 StringRedisTemplate 两个模版来进行数据操作,其中:StringRedisTemplate 只针对键值都是字符串的数据进行操作。

当我们的数据存储到 Redis 的时候,我们的键(key)和 值(value)都是通过 Spring 提供的 Serializer 序列化到数据可中的。

  • RedisTemplate 默认使用的是 JdkSerializationRedisSerializer
  • StringRedisTemplate 默认使用的是 StringRedisSerializer。

Spring Data JPA 为我们提供了下面的 Serializer

  1. GenericToStringSerializer
  2. Jackson2JsonRedisSerializer
  3. JdkSerializationRedisSerializer
  4. OxmSerializer
  5. StringRedisSerializer

2. 配置 RedisTemplate 序列化类型

Spring Boot 为我们自动配置了 RedisTemplate,而 RedisTemplate 使用的是 JdkSerializationRedisSerializer,这个对我们用 redis 图形化客户端很不直观,因为 JdkSerializationRedisSerializer 使用二进制形式储存数据,在此我们将自己配置 RedisTemplate 并定义 Serializer。
@SpringBootApplication
public class SpringBootDemoApplication {


    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }


    /**
     * 设置 redisTemplate 的序列化设置
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        // 1.创建 redisTemplate 模版
        RedisTemplate<Object, Object> template = new RedisTemplate<>();
        // 2.关联 redisConnectionFactory
        template.setConnectionFactory(redisConnectionFactory);
        // 3.创建 序列化类
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        // 4.设置可见度
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        // 5.启动默认的类型
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        // 6.序列化类,对象映射设置
        jackson2JsonRedisSerializer.setObjectMapper(om);
        // 7.设置 value 的转化格式和 key 的转化格式
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setKeySerializer(new StringRedisSerializer());
        template.afterPropertiesSet();
        return template;
    }

}

这样,我们从图形化客户端可以很直观的看出我们存储的数据。


若博客中有错误或者说的不好,请勿介意,仅代表个人想法。
csdn博客:https://blog.csdn.net/LNView
本文地址:https://blog.csdn.net/LNView/article/details/80777144

有问题或者喜欢的欢迎评论。

转载请注明出处!!!!!!

参考资料:
《Spring Boot 实战》

猜你喜欢

转载自blog.csdn.net/lnview/article/details/80777144
今日推荐