| | |
| | | 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.RedisSerializationContext; |
| | | import org.springframework.data.redis.serializer.*; |
| | | |
| | | import org.springframework.util.StringUtils; |
| | | import redis.clients.jedis.HostAndPort; |
| | | import redis.clients.jedis.JedisCluster; |
| | |
| | | @Autowired |
| | | private RedisTemplate redisTemplate; |
| | | |
| | | @Bean |
| | | public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){ |
| | | RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); |
| | | redisTemplate.setConnectionFactory(factory); |
| | | redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化类型 |
| | | redisTemplate.setHashKeySerializer(new StringRedisSerializer()); |
| | | redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); // value的序列化类型 |
| | | redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer()); |
| | | redisTemplate.afterPropertiesSet(); |
| | | return redisTemplate; |
| | | } |
| | | |
| | | //@Bean(name = "jedisPool") |
| | | //@Autowired |
| | | public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config, |
| | |
| | | } |
| | | |
| | | |
| | | // @Bean(name = "jedisCluster") |
| | | // @Bean(name = "jedisCluster") |
| | | // @Autowired |
| | | public JedisCluster jedisCluster(@Qualifier("jedis.pool.config") JedisPoolConfig config, |
| | | @Value("${jedis.pool.host}") String host, |
| | |
| | | return config; |
| | | } |
| | | |
| | | @Bean |
| | | public RedisSerializer<String> redisKeySerializer(){ |
| | | return new StringRedisSerializer(); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Bean |
| | |
| | | return cm; |
| | | } |
| | | |
| | | /** |
| | | * @return |
| | | * @Cacheable和通过RedisTemplate之间去相互获取数据 |
| | | * @Cacheable注解存储redis缓存数据和通过RedisTemplate去获取存储的数据,由于@Cacheable默认的序列化编码存储到数据为byte类型,而RedisTemplate的默认编码为JdkSerializationRedisSerializer,所以要通过设置同一个序列化方式去解决问题; 通过继承CachingConfigurerSupport并且开启@EnableCaching去设置cache的配置通过RedisCacheConfiguration.defaultCacheConfig()去设置序列化的方式RedisTemplate<String, Object>设置RedisTemplate的序列化方式 |
| | | * 设置序列化方式Jackson2JsonRedisSerializer |
| | | */ |
| | | @Bean |
| | | public RedisCacheConfiguration redisCacheConfiguration() { |
| | | |
| | | RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); |
| | | |
| | | configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())).entryTtl(Duration.ofSeconds(30)); |
| | | |
| | | configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new JdkSerializationRedisSerializer())).entryTtl(Duration.ofSeconds(30)); |
| | | return configuration; |
| | | |
| | | |
| | | } |
| | | |
| | | |