我正在使用 Spring Data Redis 进行缓存,我将键作为对象而不是字符串进行缓存。如何通过这种方式找到缓存中的所有键?
当我尝试使用 StringRedisSerializer()
时,我得到一个类强制转换异常,提示无法将对象强制转换为字符串。
当我尝试 Jackson2JsonRedisSerializer
时,它抛出异常:
Could not read JSON: Unexpected character ('¬' (code 172)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
我怎样才能得到所有的 key ?
我正在通过 @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;
}
}
最佳答案
请使用
redisTemplate.keys("*")
但在此之前,请确保您的 redisTemplate 使用正确的序列化程序。如果是字符串键:
redisTemplate.setKeySerializer(new StringRedisSerializer())
关于java - 使用 POJO 作为 Spring Redis 缓存的键时,如何获取所有键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48555430/