sql >> Databáze >  >> NoSQL >> Redis

Redis – Jak nakonfigurovat vlastní konverze

Testováno pomocí spring-boot-starter-data-redis:2.0.4.RELEASE .

Narazil jsem na problém, kde je můj OffsetDateTime vlastnosti mého @RedisHash entity nebyly ukládány při použití CrudRepository .

Problém byl v tom, že Jsr310Converters nemá převodník OffsetDateTime .

Abych to vyřešil, vytvořil jsem převodník čtení:

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

a převodník zápisu:

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

A zaregistroval RedisCustomConversions bean v konfiguraci:

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 Inserting Throws org.bson.codecs.configuration.CodecConfigurationException:Nelze najít kodek pro třídu io.github.ilkgunel.mongodb.Pojo

  2. MongoDB $ sinh

  3. Udržují pole uložená v MongoDB své pořadí?

  4. MongoDB $toLower