sql >> Database >  >> NoSQL >> Redis

Redis - Aangepaste conversies configureren

Getest met spring-boot-starter-data-redis:2.0.4.RELEASE .

Ik had een probleem waarbij mijn OffsetDateTime eigenschappen van mijn @RedisHash entiteit werden niet opgeslagen bij gebruik van CrudRepository .

Het probleem was dat Jsr310Converters heeft geen converter van OffsetDateTime .

Om dit op te lossen, heb ik een leesconverter gemaakt:

@Component
@ReadingConverter
public class BytesToOffsetDateTimeConverter implements Converter<byte[], OffsetDateTime> {
    @Override
    public OffsetDateTime convert(final byte[] source) {
        return OffsetDateTime.parse(new String(source), DateTimeFormatter.ISO_OFFSET_DATE_TIME);
    }
}

en schrijfomzetter:

@Component
@WritingConverter
public class OffsetDateTimeToBytesConverter implements Converter<OffsetDateTime, byte[]> {
    @Override
    public byte[] convert(final OffsetDateTime source) {
        return source.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME).getBytes();
    }
}

En registreerde een RedisCustomConversions bean in de configuratie:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.convert.RedisCustomConversions;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;

import java.util.Arrays;

@Configuration
@EnableRedisRepositories
public class RedisConfiguration {

    @Bean
    public RedisCustomConversions redisCustomConversions(OffsetDateTimeToBytesConverter offsetToBytes,
                                                         BytesToOffsetDateTimeConverter bytesToOffset) {
        return new RedisCustomConversions(Arrays.asList(offsetToBytes, bytesToOffset));
    }

}


  1. Verwijder alle niet-utf-8-symbolen uit string

  2. Snelle manier om duplicaten te vinden op geïndexeerde kolom in mongodb

  3. Rails Resque wijziging werknemer limiet?

  4. Hoe een kaart in Java te serialiseren om op te slaan in Redis?