【发布时间】:2019-04-28 20:40:58
【问题描述】:
我为我的 Spring 应用程序使用 redis 实现了缓存。现在我想运行一个作业,每天将数据从 Mysql 同步到 redis。
但我遇到的问题是 redis 密钥不是人类可读的文本。例如userList2:��
使用spring Cache时如何将redis键存储为纯文本?
【问题讨论】:
我为我的 Spring 应用程序使用 redis 实现了缓存。现在我想运行一个作业,每天将数据从 Mysql 同步到 redis。
但我遇到的问题是 redis 密钥不是人类可读的文本。例如userList2:��
使用spring Cache时如何将redis键存储为纯文本?
【问题讨论】:
您可以使用 cacheManager 配置中的自定义 redis 模板将值存储为 json。
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setUsePrefix(true);
return cacheManager;
}
【讨论】: