Valkey의 명령어 실행 흐름 이해해보기
Valkey에는 클라이언트에서 받은 메시지를 그대로 되돌려주는 echo 명령(command)이 있다


Valkey에서는 명령어가 어떤 흐름으로 실행되는지 알아보자
Valkey에서의 명령어 실행 흐름
- 명령어 수신
- Valkey 서버는 TCP 커넥션을 통해 클라이언트로부터 명령어를 전달받음
- 소켓에서 읽어온 데이터를 입력 버퍼에 저장
- 명령어 파싱
RESP 프로토콜또는inline command형식을 활용해 입력 버퍼의 데이터를 파싱한다- 파싱 결과를
client구조체에 저장한다

*parsed_cmd에 저장된다echo hello!명령의 경우 다음과 같이 처리된다:
c->argc = 2;
c->argv[0] = "echo";
c->argv[1] = "hello!";- 명령 테이블 lookup
command table에서 실행할 명령어에 대한 정보를 찾는다- 이때
argv[0]에 있는"echo"를 key로 활용함


- 실행 가능 여부 확인
processCommand()함수에서 해당 명령어를 실행할 수 있는지 확인한다- 명령이 실제로 존재하는지, 인자(argument) 수가 맞는지, ...

- 명령 실행
call()함수가 호출된다- call 함수는 내부적으로
c->cmd->proc(c)를 실행한다 - echo 명령의 경우 여기서
echoCommand()함수가 호출됨

- 응답 생성 및 전송
addReplyBulk()함수처럼 응답 버퍼에 데이터를 쓰는 함수가 호출된다- 최종적으로 클라이언트에게 응답이 전송됨


Valkey에 명령어를 추가해보기
기본적으로 제공되는 echo 명령을 복붙.. 해서, 똑같은 동작을 하는 echodoorcs 명령을 만들어보자
명령 로직 자체는 그대로 사용할 것이기 때문에, 세가지만 고쳐 주면 된다:



순서대로 1, 2, 3
server.h헤더에echodoorcs함수 선언 추가server.c파일에echodoorcs함수 구현체 추가commands.def파일에echodoorcs명령어 메타데이터 추가

끗