この記事の開発環境:SpringBoot + RedisTemplate
コード:
/ ** *缓存地図 * * @paramのキー * @param データマップ * @return * / @Override パブリック <T> HashOperations <文字列、文字列、T> setCacheMap(文字列キーマップ<文字列、T> データマップ){ HashOperations hashOperations = redisTemplate.opsForHash()。 もし(NULL!= データマップ){ ため(のMap.Entry <文字列、T> エントリ:dataMap.entrySet()){ hashOperations.put(キー、entry.getKey()、entry.getValue())。 } } 返すhashOperationsを。 }
データベースに、私たちはそのキー、ハッシュキー/値は\ XAC \ XED \ X00 \ x05tの\のX00の接頭辞を持っていました。
以下のように、後に、設定を追加しました:
輸入com.fasterxml.jackson.annotation.JsonAutoDetect。 輸入com.fasterxml.jackson.annotation.PropertyAccessor。 輸入com.fasterxml.jackson.databind.ObjectMapper。 輸入org.springframework.context.annotation.Bean。 輸入org.springframework.context.annotation.Configuration。 輸入org.springframework.data.redis.connection.RedisConnectionFactory; 輸入org.springframework.data.redis.core.RedisTemplate。 輸入org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer。 輸入org.springframework.data.redis.serializer.StringRedisSerializer。 @Configuration パブリック クラスRedisConfig { @Bean 公共RedisTemplate redisTemplate(RedisConnectionFactoryはconnectionFactory){ RedisTemplateテンプレート = 新しい RedisTemplate <> (); template.setConnectionFactory(はconnectionFactory)。 // 使用Jackson2JsonRedisSerializer来序列化和反序列化のRedis的値值 // Jackson2JsonRedisSerializerシリアライザ= 新しい Jackson2JsonRedisSerializer(オブジェクト。クラス)。 ObjectMapperマッパー = 新しいObjectMapper(); mapper.setVisibility(PropertyAccessor.ALL、JsonAutoDetect.Visibility.ANY)。 mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); serializer.setObjectMapper(マッパー); template.setValueSerializer(シリアライザ); // Redisのキー値シリアライズとデシリアライズするStringRedisSerializerを使用 template.setKeySerializer(新しいStringRedisSerializerを()); / *ハッシュ文字列シリアル化メソッド* / template.setHashKeySerializer(新しい新しいStringRedisSerializer()); template.setHashValueSerializer(新しい新しいStringRedisSerializer()); template.afterPropertiesSet(); 戻りテンプレート; } }
問題を解決するために、コードのこれらの3つの行を追加します。あなたはJSONの機能を使用しない場合は、ObjectMapperコメント関連するコード