Whats the difference between using Class.cast to convert an object to a certain type v/s doing the same using ObjectMapper.convertValue.
I am assuming cast also internally uses jackson but I think that's not the case here.
My RedisTemplateConfig:
@Bean
public ReactiveRedisTemplate<String, Object> reactiveRedisTemplate(
    ReactiveRedisConnectionFactory factory) {
    StringRedisSerializer keySerializer = new StringRedisSerializer();
    Jackson2JsonRedisSerializer<Object> valueSerializer =
        new Jackson2JsonRedisSerializer<>(Object.class);
    RedisSerializationContext.RedisSerializationContextBuilder<String, Object> builder =
        RedisSerializationContext.newSerializationContext(keySerializer);
    RedisSerializationContext<String, Object> context =
        builder.value(valueSerializer).build();
    return new ReactiveRedisTemplate<>(factory, context);
}
SetValueInRedis:
@Override
public <T> Mono<T> setValue(String key, Object value, Class<T> clazz) {
    return reactiveValueOps.set(key, value,
            Duration.ofDays(SESSION_PERSISTENCE_DURATION))
            .map(o -> clazz.cast(value));
}
Working GetValueInRedis:
@Override
public <T> Mono<T> getValue(String key, Class<T> clazz) {
        return reactiveValueOps.get(key)
            .flatMap(val -> Mono.justOrEmpty(objectMapper.convertValue(val, clazz)));
}
Error version of Get Value:
@Override
public <T> Mono<T> getValue(String key, Class<T> clazz) {
    return reactiveValueOps.get(key)
        .flatMap(o -> Mono.justOrEmpty(clazz.cast(o)));
    }
----EDIT----
If we notice the serializer used for Redis(Jackson2JsonRedisSerializer): while saving the object to redis it works fine. But while reading(get) cast fails and objectMappper works. When I am using Jackson2JsonRedis serializer, shouldn't get command return an object which should be castable using Class.cast command itself?
 
    