복붙노트

[REDIS] 레디 스 직렬화는 별도의 문자열로 시작

REDIS

레디 스 직렬화는 별도의 문자열로 시작

낙타 - 레디 스의 시리얼 라이저는 메시지 키에 추가 문자 접두어입니다.

나는 DB, 같은 메시지 키 쇼 뭔가를 선택하면 ..

"\xac\xed\x00\x05t\x00\x11test150827171118"

당신은 문자열을 "\ XAC \ 고정 된 \ x00부터 \ x05t \ x00부터 \ X11"에서 볼 수 있듯이

키 "test150827171118"를 앞에 붙습니다.

나는,이 패턴을 시도

첫째, 내가 직접 레지스트리에서 시리얼을 설정합니다.

Registry.put("serializer", new StringRedisSerializer());

제 2 패턴은 먼저 RedisTemplate에 설정된다. 그런 다음 레지스트리에서 레디 스 템플릿을 넣어.

RedisTemplate<?, ?> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
registry.put("redisTemplate", template);

모두 serizlization의 문제를 해결할 수 없습니다. 나는 나는 낙타 레디 스에 대한 추가 구성이 없습니다.

해결법

  1. ==============================

    1.나는 마지막으로 인터넷 검색과 내 개발 시스템에 구현 대여섯 시간 후에 답을 발견했다.

    나는 마지막으로 인터넷 검색과 내 개발 시스템에 구현 대여섯 시간 후에 답을 발견했다.

    낙타 시리얼 URI의 옵션은 소비자를위한 것입니다. 생산자에 영향을 미치는, 또한 기본 시리얼로 StringRedisSerializer와 사용자 정의 RedisTemplate를 구성해야합니다.

    redisTemplate.setDefaultSerializer(new StringRedisSerializer());
    

    그런 다음 두 시리얼 라이저를 넣어 레지스트리에 템플릿 인스턴스를 레디 스 및 낙타 URI에서 참조.

    registry.put("customTemplate", template);
    registry.put("stringSerializer", new StringRedisSerializer());
    

    낙타 URI는 같다 ...

    redis://<host>:<port>?redisTemplate=#customTemplate&serializer=#stringSerializer
    
  2. from https://stackoverflow.com/questions/32245916/redis-serialization-prefixed-with-extra-string by cc-by-sa and MIT license