一、引入依赖
<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>
二、配置文件application.yml
spring:
redis:
# redis 服务器地址
host: 127.0.0.1
# redis 端口
port: 6379
# redis 数据库索引(默认为0)
database: 0
# 连接超时时间
timeout: 18000
# 连接池
lettuce:
pool:
# 连接池最大连接数,使用负值表示没有限制
max-active: 20
# 连接池最大阻塞等待时间,使用负值表示没有限制
max-wait: -1
# 连接池最大空闲连接
max-idle: 5
# 连接池最小空闲连接
min-idle: 0
三、redis配置类
@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public Redistemplate<String,Object> redistemplate(RedisConnectionFactory redisConnectionFactory) {
Redistemplate<String, Object> redistemplate = new Redistemplate<>();
redistemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.serialize(mapper);
StringRedisSerializer redisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
redistemplate.setKeySerializer(redisSerializer);
// value序列化方式采用jackson
redistemplate.setValueSerializer(jackson2JsonRedisSerializer);
// hash的key也采用String的序列化方式
redistemplate.setHashKeySerializer(redisSerializer);
// hash的value序列化方式采用jackson
redistemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redistemplate.afterPropertiesSet();
return redistemplate;
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
// 解决查询缓存转换异常问题
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setobjectMapper(mapper);
// 配置序列化(解决乱码问题),过期时间600秒
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(600))
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
.disableCachingNullValues();
RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(redisCacheConfiguration)
.build();
return cacheManager;
}
}
四、测试一下
@RestController
@RequestMapping("/redisTest")
public class RedisController {
@Autowired
private Redistemplate redistemplate;
@GetMapping("/redis")
public String redistest() {
redistemplate.opsForValue().set("name","张三");
return (String) redistemplate.opsForValue().get("name");
}
}
持续学习中,更新。。。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。