sql >> Databasteknik >  >> NoSQL >> Redis

Redis - Hur man konfigurerar anpassade konverteringar

Testad med spring-boot-starter-data-redis:2.0.4.RELEASE .

Jag stod inför ett problem där min OffsetDateTime egenskaper för min @RedisHash entitet lagrades inte när CrudRepository användes .

Problemet var att Jsr310Converters har inte en omvandlare av OffsetDateTime .

För att lösa detta skapade jag en läskonverterare:

@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);
    }
}

och skrivkonverterare:

@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();
    }
}

Och registrerade en RedisCustomConversions bean i konfigurationen:

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. MongoDB Java Driver databas anslutning pooling med Tomcat

  2. MongoDB dra element från array två nivåer djup

  3. Lagra lösenord med Node.js och MongoDB

  4. Varför du fortfarande borde använda MMAPv1 Storage Engine för MongoDB