一、关于redis

Redis 是一个基于内存的高性能key-value数据库,支持多种数据结构。

二、springboot集成

1、添加依赖
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.6.2</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.10.4</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.10.4</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.10.4</version>
    </dependency>
  </dependencies>
2、配置application.ym
spring:
  redis:
    database: 0
    host: localhost
    port: 6379
    password:
    timeout: 3000
    lettuce:
      pool:
        max-active: 200
        max-wait: 10000
        max-idle: 20
3、添加配置类,自定义RedisTemplate
@Configuration
public class RedisConfig {

    /**
     * 默认使用JDK自带序列化方式
     * 这里修改为其他方式
     */
    @Bean
    public RedisTemplate<String, Serializable> redisTemplate(LettuceConnectionFactory connectionFactory) {
        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setConnectionFactory(connectionFactory);
        return redisTemplate;
    }
}
4、实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    private Integer id;
    private String name;
}
5、测试
@SpringBootTest
@Slf4j
class RedisApplicationTests {

    @Autowired
    private RedisTemplate<String, String> strRedisTemplate;
    // 取消redisconfi中的自定义模板可用
//    @Autowired
//    private RedisTemplate<Object, Object> objRedisTemplate;
    @Autowired
    private RedisTemplate<String, Serializable> serializableRedisTemplate;

    @Test
    void contextLoads() {
        strRedisTemplate.opsForValue().set("url", "lazyrabbit.xyz");
        log.info("get url from redis:{}", strRedisTemplate.opsForValue().get("url"));

//        User user = new User(1, "rabbit");
//        objRedisTemplate.opsForValue().set("user", user);
//        log.info("get user from redis:{}", objRedisTemplate.opsForValue().get("user"));
        User user2 = new User(2, "chenshi");
        serializableRedisTemplate.opsForValue().set("user2", user2);
        log.info("get user2 from redis:{}", serializableRedisTemplate.opsForValue().get("user2"));
    }
}