gpt4 book ai didi

java - 使用 spring-data-redis 在 redis 中存储原始 json

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:05:41 29 4
gpt4 key购买 nike

我正在使用 RedisCacheManager 将我的缓存数据存储在我的 spring-boot 应用程序中。默认序列化程序似乎将所有内容序列化为字节,并将字节反序列化为适当的 java 类型。

但是,我想将缓存数据存储为 json,以便我可以从非 java 客户端读取它。

我发现从默认序列化器切换到其他序列化器(例如 Jackson2JsonRedisSerializer)应该可以工作。这样做之后,反序列化阶段失败。

pom.xml

    <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>

缓存配置文件

@Configuration
@EnableCaching
public class CacheConfig {

@Bean
public RedisConnectionFactory createRedisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName("localhost");
return factory;
}

// SPRING-DATA-REDIS ALREADY PROVIDES A STRING REDIS TEMPLATE, SO THE FOLLOWING IS NOT NECESSARY
// @Bean
// public RedisTemplate<String, String> createRedisTemplate(RedisConnectionFactory factory) {
// RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
// redisTemplate.setConnectionFactory(factory);
// return redisTemplate;
// }

@Bean
public CacheManager redisCacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
return cacheManager;
}
}

有没有办法以纯 JSON 格式存储它们并成功反序列化?

最佳答案

将此添加到您的配置中以在 redis 模板中显式设置 jackson 序列化程序。

public @Bean RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {

RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}

关于java - 使用 spring-data-redis 在 redis 中存储原始 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41875635/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com