Spring Данные Redis — RedisTemplate

В настоящее время я использую RedisTemplate из Spring Data Redis. Он имеет одно значение по умолчанию StringRedisTemplate для строковых операций.

Но если у меня есть такие объекты, как Car, CreditCard, House и т. д. Должен ли я создать несколько шаблонов Redis с соответствующими сериализаторами?

RedisTemplate<String, Car>
RedisTemplate<String, CreditCard>
RedisTemplate<String, House>

Какова наилучшая практика?


person RamPrakash    schedule 01.07.2021    source источник


Ответы (1)


Определите bean-компонент redisTemplate объекта, как показано ниже. Spring сериализатор значения по умолчанию redisTemplate - JdkSerialization. Вы можете изменить его с помощью Jackson2Json или GenericJackson2Json.

Jackson2Json и GenericJackson2Json хранят значения как json (читаемые)

вот их отличие -› https://www.programmersought.com/article/84233376165/

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        final RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
person omer    schedule 01.07.2021
comment
Спасибо за ответ. Итак, вы говорите, хранить все как объект? потерять тип? - person RamPrakash; 01.07.2021
comment
Вы уже знаете тип значения ключей, можете использовать вот так final Car carValue = redisTemplate.opsForValue().get("carKey"); final House houseValue = redisTemplate.opsForValue().get("houseKey"); - person omer; 02.07.2021