我正在使用Spring Data Redis进行缓存,我将密钥作为对象缓存,而不是字符串。如何以这种方式找到缓存中的所有密钥?
当我尝试使用StringRedisSerializer()
时,我得到一个类强制转换异常,说该对象不能转换为字符串。
当我尝试Jackson2JsonRedisSerializer
时,会抛出异常:
无法读取JSON:意外字符('¬'(代码172)):预期有效值(数字,字符串,数组,对象,'true','false'或'null')
如何获得所有密钥?
我正在通过@Cacheable
注释进行缓存。
@EnableCaching
public class RedisCacheConfig
{
public static final String REDIS_CACHE_MGR = "RedisCacheManager";
@Value( "${spring.redis.cluster}" )
private List<String> cluster;
@Bean
public JedisConnectionFactory redisConnectionFactory()
{
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(
new RedisClusterConfiguration( cluster )
);
return redisConnectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf)
{
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory( cf );
return redisTemplate;
}
@Bean
public CacheManager redisCacheManager(RedisTemplate redisTemplate) throws EagleCacheException
{
RedisCacheManager cacheManager = new RedisCacheManager( redisTemplate );
cacheManager.setDefaultExpiration( 3600 );
return cacheManager;
}
}
答案 0 :(得分:1)
请使用
redisTemplate.keys("*")
但在此之前,请确保您的redisTemplate使用正确的序列化程序。如果是字符串键:
redisTemplate.setKeySerializer(new StringRedisSerializer())
答案 1 :(得分:0)
将RedisTemplate自动装配到某处并尝试此操作
redisTemplate.keys("*")