【发布时间】:2018-02-13 19:34:12
【问题描述】:
您好,下面是我的 redis 缓存配置,我正在尝试使用以下方式获取存储在 redis 服务器上的所有缓存名称:
redisCacheManager.getCacheNames()
但它没有给我 redis 服务器中存在的 cacheName。
我使用 Cachable 注解为 cacheName 添加前缀:@Cacheable("cacheName")
我这里有 2 个问题?
1) 为什么我无法获取我存储在 redis 服务器中的缓存名称。 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;
}
【问题讨论】:
标签: java redis spring-data spring-data-redis