package com.sky.ioc.config; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; 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.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @EnableCaching @Configuration public class MyRedisConfig { // @Primary // @Bean // public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory){ // RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig(); // redisCacheConfiguration = redisCacheConfiguration // // 设置缓存的默认超时时间:30分钟 // .entryTtl(Duration.ofMillis(30l)) // // 如果是空值,不缓存 // .disableCachingNullValues() // // 设置key序列号器 // .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerialization())) // // 设置value序列号器 // .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerialization())); // // return RedisCacheManager // .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)) // .cacheDefaults(redisCacheConfiguration) // .build(); // } // // // key序列号器 // private RedisSerializer keySerialization(){ // return new StringRedisSerializer(); // } // // value序列号器 // private RedisSerializer valueSerialization(){ // return new GenericJackson2JsonRedisSerializer(); // } @Bean(name = "redisTemplate") public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate redisTemplate = new RedisTemplate<>(); ////参照StringRedisTemplate内部实现指定序列化器 redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(keySerializer()); redisTemplate.setHashKeySerializer(keySerializer()); redisTemplate.setValueSerializer(valueSerializer()); redisTemplate.setHashValueSerializer(valueSerializer()); return redisTemplate; } private RedisSerializer keySerializer(){ return new StringRedisSerializer(); } //使用Jackson序列化器 private RedisSerializer valueSerializer(){ return new GenericJackson2JsonRedisSerializer(); } }