本文只有redis的相关配置:
1、springboot整合redis的maven坐标
<!-- spring-boot-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 缓存连接池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<!-- redis存储json序列化 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
2、yml配置
spring:
redis:
host: 127.0.0.1
port: 6379
database: 0
timeout: 3000ms #最大等待时间,超时抛异常,否则请求一直等待
lettuce:
pool:
max-active: 20 #最大连接数 负值表示没有限制 默认8
max-wait: -1 #最大阻塞等待时间 负值表示没有限制 默认-1
max-idle: 8 #最大空闲连接 默认8
min-idle: 0 #最小空闲连接 默认0
3、redis配置类
@Configuration
public class RedisConfig {
/**
* 配置Lettuce连接池对象
* @param redisConnectionFactory
* @return
*/
@Bean
public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<String,Object>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
//序列化
//1、key进行序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
//2、value进行json序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
//2.1、解决jackson2无法反序列化LocalDateTime的问题
ObjectMapper objectMapper = new ObjectMapper();
//将当前对象的类型也存入序列化的结果字符串中
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.registerModule(new JavaTimeModule());
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
return redisTemplate;
}
}
4、测试类
@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTemplateTest {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private DictMapper dictMapper;
@Test
public void saveDict(){
Dict dict = dictMapper.selectById(1);
//opsForValue存字符串
redisTemplate.opsForValue().set("dict",dict,5,TimeUnit.MINUTES);
log.info("SET SUCCESS");
}
@Test
public void getDict(){
Dict dict = (Dict)redisTemplate.opsForValue().get("dict");
log.info("dict=> {}",dict);
}
}