Spring boot 2.0.x 集成 redis
在pom.xml中导入
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>RELEASE</version>
</dependency>
在springboot的application.yml 中进行redis参数设置
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379
timeout: 5000
新建配置类RedisConfig.java
- package com.project.config;
- import com.fasterxml.jackson.annotation.JsonAutoDetect;
- import com.fasterxml.jackson.annotation.PropertyAccessor;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import org.springframework.cache.CacheManager;
- import org.springframework.cache.annotation.CachingConfigurerSupport;
- import org.springframework.cache.annotation.EnableCaching;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.cache.RedisCacheConfiguration;
- import org.springframework.data.redis.cache.RedisCacheManager;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.core.StringRedisTemplate;
- import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
- import org.springframework.data.redis.serializer.RedisSerializer;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- import java.time.Duration;
- @Configuration
- @EnableCaching
- public class RedisConfig extends CachingConfigurerSupport {
- @Bean
- public CacheManager cacheManager(RedisConnectionFactory factory) {
- RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
- .entryTtl(Duration.ofSeconds(60))
- .disableCachingNullValues();
- return RedisCacheManager.builder(factory)
- .cacheDefaults(config)
- .transactionAware()
- .build();
- }
- @Bean
- public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
- StringRedisTemplate template = new StringRedisTemplate(factory);
- RedisSerializer keySerializer = new StringRedisSerializer(); // 设置key序列化类,否则key前面会多了一些乱码
- template.setKeySerializer(keySerializer);
- setValueSerializer(template);//设置value序列化
- template.afterPropertiesSet();
- template.setEnableTransactionSupport(true);
- return template;
- }
- private void setValueSerializer(StringRedisTemplate template) {
- @SuppressWarnings({"rawtypes", "unchecked"})
- Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
- ObjectMapper om = new ObjectMapper();
- om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
- om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
- jackson2JsonRedisSerializer.setObjectMapper(om);
- template.setValueSerializer(jackson2JsonRedisSerializer);
- }
- }
完成以上步骤即可使用@Cacheable等缓存注解
- @Service
- public class ResourcesOptionService {
- @Cacheable(value = "xxx" ,key = "#type")
- public List<xxx> searchxxxlist(String type ,ExpressionList<xxx> list){
- List<xxx> xxxlist= list.findList();
- System.out.println("进入缓存");
- return xxxlist;
- }
- }
具体注解详情请自行百度
以下链接为@Cacheable等注解 操作方式详解
https://blog.csdn.net/dreamhai/article/details/80642010