【西瓜皮】Spring Boot 2.x 整合 Redis(一)

0

Spring Boot 2 整合 Redis(一)

Spring Boot 2.0.3简单整合Redis

IDEA Spring Initialzr 创建工程:选上Redis依赖项

clipboard.png

Maven依赖

        // Spring Boot 1.5版本的依赖下artifactId是没有data的
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

application.yml文件的配置,其中Jedis配置有默认值,Spring Boot 2后默认的连接池是lettuce,后面会讲。

server:
  port: 6868

spring:
  redis:
    database: 0 # 0-15db
    host: 127.0.0.1
    port: 6379
    password:
    timeout: 1200
    # Jedis的配置,可以不配置,有默认值(RedisProperties类中有指定默认值)
    jedis:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: -1

配置完可以直接注入使用

clipboard.png

    // 测试StringRedisTemplate
    @GetMapping("/testStringRedisTemplate")
    public String testStringRedisTemplate() {
        String now = LocalDateTime.now().toString();
        stringRedisTemplate.opsForValue().set("key_" + now, now);
        return now;
    }

结果如下:

clipboard.png

在这里,实际上很少直接使用RedisTemplate<Object,Object> redisTemplate,一般是写Redis的配置类自定义RedisTemplate,接下来就实现自定义customRedisTemplate。

customRedisTemplate

@Configuration
public class RedisConfig {
    /**
     * 自定义RedisTemplate
     * @param connectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Student> customRedisTemplate(
            RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Student> rt = new RedisTemplate<>();
        // 实例化Jackson的序列化器
        Jackson2JsonRedisSerializer<Student> serializer
                = new Jackson2JsonRedisSerializer<Student>(Student.class);
        // 设置value值的序列化器为serializer
        rt.setValueSerializer(serializer);
        rt.setHashValueSerializer(serializer);
        // 设置key键的序列化器为serializer
        rt.setKeySerializer(new StringRedisSerializer());
        rt.setHashKeySerializer(new StringRedisSerializer());
        // 设置redis连接工厂(线程安全的)
        rt.setConnectionFactory(connectionFactory);
        return rt;
    }
}

测试自定义RedisTemplate的用例

    @PostMapping("/add")
    public String add(@RequestBody Student student) {
        System.out.println(student);
        customRedisTemplate.opsForValue().set("key_" + student.getId(), student);
        return "add success";
    }

启动Spring Boot并通过Restlet测试:

clipboard.png

结果如下:

clipboard.png

到此,简单的整合Redis已经成功。接下来是cache注解。

你可能感兴趣的

载入中...