1. Binary Safe
전송되는 데이터에 따라서 프로토콜이 오작동하지 않는다. 예를 들어 어떤 프로토콜이 데이터의 전송 종료를 알리기 위한 구분자로 줄바꿈 문자를 사용한다고 가정하자. 이때 텍스트 파일을 데이터로 전송하면 데이터가 전부 전송되지 못하고 종료되는 현상이 벌어진다. 이런 현상을 발생시키는 프로토콜들은 binary safe 하지 않다.
2. Type
발신/수신 프로토콜을 살펴보기 위해서
set key value
를 예시로 들어보자.
위의 레디스 명령어를 발신 프로토콜로 변환하면 아래와 같다.
*3 $3set $3key $5value
*은 명령어 수를 나타내며, $는 바이트 수를 나타낸다.
set key value는 3개의 명령어를 가지며, set, key, value가 각각 3bytes, 3bytes, 5bytes 이기 때문에 위와 같이 표현된다.
수신 프로토콜은 매우 단순하다.
첫 번째 1바이트의 값이 응답 데이터의 종류를 의미하는데, 응답 데이터에는 5가지 구분자가 존재한다.
+ : 상태 응답. 요청된 명령의 처리 결과에 대한 상태 메시지를 반환
ㅡ : 에러 응답. 요청된 명령이 실패했을 때 실패의 원인에 대한 상태 메시지를 반환
: : 숫자 응답. 요청된 명령에 처리 결과를 숫자로 반환
$ : 데이터의 크기를 포함한 데이터를 반환
* : 응답되는 데이터 개수를 반환