sql >> Database >  >> NoSQL >> Redis

Een generieke RedisTemplate opdrogen in het voorjaar 4

Ik had hetzelfde probleem. U kunt hiervoor een generieke bean maken en de GenricJackson2JsonRedisSerializer gebruiken. Het probleem is dat door dit te gebruiken de json wordt opgeslagen met wat extra gegevens zodat de deserialisatie later kan werken.

Een andere manier zou zijn om de Jackson2JsonRedisSerializer te gebruiken, maar deze heeft de Class-instantie van het generieke type nodig om te werken, waarvan ik niet kon achterhalen hoe ik deze moest krijgen.

@Bean("objectRedisTemplate")
public <T> RedisTemplate<String, T> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, T> redisTemplate = new RedisTemplate<>();

    redisTemplate.setConnectionFactory(redisConnectionFactory);

    RedisSerializer<String> serializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(serializer);
    redisTemplate.setHashKeySerializer(serializer);

    redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());

    return redisTemplate;
}

Gebruik op cacheklasse:

@Autowired
@Qualifier("objectRedisTemplate")
private RedisTemplate<String, MyTypeA> redisTemplate;



  1. Aangepaste functies berekende kolommen mongodb-projectie

  2. MongoDB BSON-codec wordt niet gebruikt tijdens het coderen van het object

  3. Hoe registreer ik mijn vragen in MongoDB C# Driver 2.0?

  4. $lookup op ObjectId's in een array