[REDIS] 스프링 데이터의 2.0.x에서 RedisCacheManager을 만드는 방법
REDIS스프링 데이터의 2.0.x에서 RedisCacheManager을 만드는 방법
나는 2.0.x가 봄 부팅 1.5.x 이하에서 내 애플리케이션을 마이그레이션하고있어 나는 jedis을 유지하지만 나는 RedisCacheManager의 인스턴스에 문제가 있습니다.
이제 생성자 서명은
RedisCacheManager(RedisCacheWriter cacheWriter, RedisCacheConfiguration defaultCacheConfiguration)
그러나 이전했다 :
RedisCacheManager(RedisOperations redisOperations)
나는 범위에서만 RedisTemplate을 가진이 빈을 정의한다 :
@Bean
public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
HandleRedisCacheManager redisCacheManager = new HandleRedisCacheManager(redisTemplate);
redisCacheManager.setUsePrefix(true);
return redisCacheManager;
}
어떻게 지금 생성하도록되어?
해결법
-
==============================
1.그것은 더 이상 RedisTemplate을 허용하지 않습니다. 그래서이 시도 :
그것은 더 이상 RedisTemplate을 허용하지 않습니다. 그래서이 시도 :
@Bean public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory, ResourceLoader resourceLoader) { RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager .builder(redisConnectionFactory) .cacheDefaults(determineConfiguration(resourceLoader.getClassLoader())); List<String> cacheNames = this.cacheProperties.getCacheNames(); if (!cacheNames.isEmpty()) { builder.initialCacheNames(new LinkedHashSet<>(cacheNames)); } return builder.build(); } private org.springframework.data.redis.cache.RedisCacheConfiguration determineConfiguration( ClassLoader classLoader) { if (this.redisCacheConfiguration != null) { return this.redisCacheConfiguration; } CacheProperties.Redis redisProperties = this.cacheProperties.getRedis(); RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); ObjectMapper mapper = new Jackson2ObjectMapperBuilder() .modulesToInstall( new SimpleModule().addSerializer( new NullValueSerializer(null)) ) .failOnEmptyBeans( false ) .build(); mapper.enableDefaultTyping( ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer( mapper ); //get the mapper b/c they registered some internal modules config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(serializer));; if (redisProperties.getTimeToLive() != null) { config = config.entryTtl(redisProperties.getTimeToLive()); } if (redisProperties.getKeyPrefix() != null) { config = config.prefixKeysWith(redisProperties.getKeyPrefix()); config = config.computePrefixWith(cacheName -> redisProperties.getKeyPrefix() + cacheName + "::"); } if (!redisProperties.isCacheNullValues()) { config = config.disableCachingNullValues(); } if (!redisProperties.isUseKeyPrefix()) { config = config.disableKeyPrefix(); } return config; }
-
==============================
2.코드를 다음 시도는 봄 부팅 2.1.0.RELEASE에 나를 위해 작동
코드를 다음 시도는 봄 부팅 2.1.0.RELEASE에 나를 위해 작동
@Bean public RedisCacheManager redisCacheManager(LettuceConnectionFactory lettuceConnectionFactory) { RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .disableCachingNullValues() .entryTtl(Duration.ofHours(1)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.json())); redisCacheConfiguration.usePrefix(); return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(lettuceConnectionFactory) .cacheDefaults(redisCacheConfiguration).build(); }
from https://stackoverflow.com/questions/51418161/how-to-create-rediscachemanager-in-spring-data-2-0-x by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 어떻게 레디 스 높은 처리량과 성능을 달성 하는가? (0) | 2020.01.17 |
---|---|
[REDIS] 여러 클라이언트가 레디 스에서 차단받지 않고 동시에 동일한 목록에 액세스 할 수 있습니다? (0) | 2020.01.17 |
[REDIS] ServiceStack 엔티티 ID 필드 이름 (0) | 2020.01.17 |
[REDIS] 수평 레디 스와 socket.io를 확장 (0) | 2020.01.17 |
[REDIS] 셀러리 celerybeat 장고없이 데이터베이스 스케줄러를 사용할 수 있습니까? (0) | 2020.01.17 |