RedisCacheManagerを使用してSpringデータをSpringブートアプリケーションに保存しています。デフォルトのシリアライザは、すべてをバイト列にシリアライズし、バイトから適切なJava型に逆シリアル化しているようです。spring-data-redisを使用してraw jsonをredisで保存します。
しかし、私はnone-javaクライアントから読み取ることができるように、キャッシュデータをjsonとして保存する必要があります。
私は、デフォルトのものからJackson2JsonRedisSerializerのような他のシリアライザに切り替えることができることが判明しました。これを実行すると、デシリアライズフェーズが失敗します。
のpom.xml
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
CacheConfig.java
@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のキャッシュデータはまだバイトです。 x00 \ x05valuexr \ x00 \ x10java.langのように、\ xac \ x00 \ x05sr \ x00 \ x0ejava.lang.Long \ x8b \ xe4 \ x90 \ xcc \ x8f#\ xdf \ x02 \ x00 \ x01J \ x00 \ xxx \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x01 " – Muatik
アップデートされた設定は、今すぐご確認ください。 – mhshimul
更新された回答を確認しましたか?お知らせ下さい。 – mhshimul