sql >> データベース >  >> NoSQL >> Redis

Spring Boot+Redis-奇妙なキーを生成する

    問題を解決しました。この投稿を検索して見つけました。

    RedisTemplateのいくつかのプロパティを使用するようにコードを変更しました:

    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(cf);
    
        configureSerializers(redisTemplate);
    
        JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) cf;
        JedisPoolConfig actualPoolConfig = jedisConnectionFactory.getPoolConfig();
        jedisConnectionFactory.setPoolConfig(createJedisPoolConfig(actualPoolConfig));
    
        return redisTemplate;
    }
    
    private void configureSerializers(RedisTemplate<String, String> redisTemplate) {
        RedisSerializer<String> serializerKey = new StringRedisSerializer();
        redisTemplate.setKeySerializer(serializerKey);
        redisTemplate.setHashKeySerializer(serializerKey);
    
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        om.configure(
                DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        jackson2JsonRedisSerializer.setObjectMapper(om);
    
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
    }    
    

    問題は、デフォルトのシリアライザーが「JdkSerializationRedisSerializer」であるためです。現在、「StringRedisSerializer」を使用してキーを生成しています。値を生成するには、「Jackson2JsonRedisSerializer」を使用してデータをJsonValueに変換しています。

    現在、私のキーには「奇妙な」文字がありません。



    1. node.jsでmongodbに接続(および認証)するにはどうすればよいですか?

    2. Mongodbを3.2から3.6にアップグレード中にエラーが発生しました

    3. Redis +ActionController::ライブスレッドが死んでいない

    4. ビッグデータアプリケーションにMongoDBを選択する際に考慮すべき要素