ps:redis集群搭建跳过。
1.pom文件引入依赖
<!-- redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 缓存--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- lettuce pool 缓存连接池 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!-- jackson json 优化缓存对象序列化 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>
2:yml配置
spring: redis: database: 0 #Redis数据库索引(默认为0) cluster: nodes: ip1:端口1,ip1:端口2,ip1:端口3 max-redirects: 3 password: #redis服务器连接密码 lettuce: pool: max-idle: 16 #连接池最小空闲连接 max-active: 32 #连接池最大连接数 min-idle: 8 #连接池最小空闲连接 max-wait: -1 #连接池最大阻塞等待时间(负数表示没有限制) timeout: 3000 #redis连接超时时间(ms) #########cache配置######## cache: cache-names: remote_cache #缓存的名称集合,多个采用逗号分割 type: redis redis: cache-null-values: false #是否缓存null数据,默认是false time-to-live: 6000 #redis中缓存超时的时间,默认60000ms use-key-prefix: true #缓存数据key是否使用前缀,默认是true key-prefix: #缓存数据key的前缀,在上面的配置为true时有效, timeout: 10 #缓存保存时间,单位s
3. cacheConfig配置
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; 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.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; import java.time.Duration; import java.util.*; @Slf4j @Configuration @EnableCaching // 启用缓存 public class CacheConfig extends CachingConfigurerSupport { @Value("${spring.cache.cache-names}") private String cacheDefaultName; @Value("${spring.cache.timeout}") private String timeout; @Bean CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration defaultCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig(); //common信息缓存配置 RedisCacheConfiguration useCacheConfiguration = defaultCacheConfiguration // 设置 key为string序列化 .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) // 设置value为json序列化 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())) .disableCachingNullValues(); Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>(); // 设置缓存失效时间,单位是秒 RedisCacheConfiguration redisCacheConfiguration = useCacheConfiguration.entryT