2017-09-05 2 views
0
작동하지 않습니다

안녕하세요 아래에있는 내 레디 스 캐시 구성입니다, 나는 모든 cachename 사용 레디 스 서버에 저장된 얻기 위해 노력하고 있어요 :봄 레디 스 문제가 : 레디 스 캐시에서 GetAllCacheNames가 RedisCacheManager

redisCacheManager.getCacheNames()

하지만 redis 서버에있는 cacheName을 제공하지 않습니다. 내가 cacheName가 캐시 할 주석을 사용하여 앞에

: @Cacheable ("cacheName")

를 내가 여기이 개 질문이?

1) 왜 redis 서버에 저장된 cacheNames를 가져올 수 없습니까? 2) 나는 어떻게 그들을 위해 별도의 메서드를 작성하고 싶지 않아서 동적으로 접두사 cacheName을 만들 수 있습니까?

@Bean 
JedisConnectionFactory jedisConnectionFactory() { 
    JedisConnectionFactory factory = new JedisConnectionFactory(); 
    factory.setHostName(redisHost); 
    factory.setPort(redisPort); 
    factory.setUsePool(true); 
    return factory; 
} 

@Bean 
RedisTemplate<Object, Object> redisTemplate() { 
    RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>(); 
    redisTemplate.setConnectionFactory(jedisConnectionFactory()); 
    redisTemplate.setDefaultSerializer(new StringRedisSerializer()); 
    // redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class)); 
    return redisTemplate; 
} 

@Bean 
CacheManager cacheManager() { 
    // configuration to set the time to expire in seconds, messageCache is name of method 
    Map<String,Long> cacheMap = new HashMap<String, Long>(); 
    //cacheMap is the name of the map where we put all the method names for which we want time to expire. 
    RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate()); 
    redisCacheManager.setUsePrefix(true); 
    //redisCacheManager.setExpires(cacheMap); 
    return redisCacheManager; 
} 

답변

0

CacheNames를 들어, 시도

@Autowired CacheManager cacheManager  
cacheManager.getCacheNames().forEach(cacheM-> {System.out.println(cacheM);});