본문 바로가기

좋아하는 것_매직IT/9.redis

16.Redis, 송/수신 프로토콜에 대해서 알아볼께요.^^

반응형

Redis 프로토콜

  • Redis 서버가 수신하는 모든 명령은 Redis 프로토콜을 통해서 송수신됨.
  • 채널은 TCP/IP이고, Redis 서버 환경설정파일에 기술된 포트를 사용함.
  • 텍스트 기반 프로토콜

프로토콜의 구조

  • Redis 프로토콜은 binary-safe 함
    • 즉, 전송되는 데이터에 따라서 프로토콜이 오작동하지 않게설계됨.

송신프로토콜

프로토콜은 2부분으로 나눠짐.

  • 전송할 인자의 개수를 표시하는 부분
    • 입력된 인자의 정보는 애스터리스크(*) 문자로 시작
    • 인자의 개수에 해당하는 숫자와 줄바꿈 문자로 이루어짐
  • 입력되는 정보를 표시하는 부분.
    • 인자의 정보는 인자의 길이와 인자 데이터로 이루어짐.
      • 인자 정보의 시작은 달러기호($) 문자로 시작, 두줄로 구성됨.
  • ex) SET thubkey v1

  • 위의 예시는 Redis 프로토콜로 변경한 결과임.

수신프로토콜

  • 수신 프로토콜 구조는 단순함.
    • 첫번째 1byte의 값이 응답 데이터 종류를 의미함.
    • 응답 데이터 종류
      • 응답구분자 설명
        + 상태응답. 명령의 처리 결과에 대한 상태 메시지를 반환함.
        - 에러응답, 명령이 실패했을 경우, 실패의 원인에 대한 에러 메시지를 반환함.
        : 숫자응답, 명령에 처리 결과를 숫자로 반환함.
        $ 단일 벌크응답, 데이트의 크기를 포함한 데이터를 반환함.
        * 멀티 벌크응답, 응답되는 데이터 개수를 반환함.
      • 5가지 종류의 응답이 이루어짐.
        • 상위 3개는 응답이 모두 한 줄로 이루어짐.
        • 하위 2개는 응답이 여러 줄로 이루어짐.
        • 전송  프로토콜에서 사용된 것과 동일하다고 보면됨.
  • 프로토콜 예시

    • 값 저장 확인
        • 위의 수신 프로토콜 구조에서 본것과 같이 상태 응답을 나타내는 구분자는 플러스기호(+), 아스키값 43(0x2b) 임.
    • 다른  프로토콜 확인도 위의 예제와 같이 진행하면 테스트 가능함.
      • 시간되실때 꼭 해보시길 ^^;

결론

  • Redis 프로토콜은 텍스트 기반 프로토콜
    • 채널은 TCP/IP이고, Redis 서버 환경설정파일에 기술된 포트를 사용함.
  • Redis 프로토콜은 텍스트 기반이기때문에 telnet 테스트를 통해서 알 수 있음.

  • 오늘의 명언 한마디
    • 당신이 두려움을 극복하면, 세상은 열릴것이요, 당신이 두려움에 굴복하면 매년 세상은 더 작아질 것이다. -로버트기요사키, 『부자아빠, 가난한아빠3』 중에서

  • 오늘의 영어 한마디
    • 질문) Are you hurt?
      • 다친 데는 없지?
    • 응답) No. I'm fine.
      • 네 괜찮아요.
    • 해설
      • hurt는 "다치게 하다" 라는 의미의 동사 
      • "I'm hurt." 는 문자그대로 "다쳤다", 라는 의미와 함께 기분이 상했다는 의미도 있음. 
      • "I'm fine." 은 괜찮다.고 상대방을 안심시키는 표현.
728x90
300x250