티스토리 뷰

 

해당 내용은 2025 오픈소스 아카데미 체험형-1차, Redis (강대명 멘토님) 교육을 통해 나온 과제를 정리 및 학습용으로 작성되었습니다.

과제 설명 

 

 

과제 수행 내용 

이번 Redis 과제로 나온 내용은 기존 Valkey 명령어 내에서 본인 이름을 넣은 echoCommand 구현 과제였습니다.

해당 과제를 수행하기 위해, 참고한 파일은 src 폴더 내에 존재하는 server.c / server.h / commands.def 총 3개입니다.

해당 3개 파일의 연관 관계는 아래와 같습니다.

 

commends.def → server.h → server.c

 

명령어 정의를 commends.def를 통해 기술하고, 빌드 시에 server.h에 존재하는 구조체 및 선언들을 참고하여, 실질적인 명령어 동작이 진행되는 방식입니다.

 

- server.c

void echoCommand(client *c) {
    addReplyBulk(c, c->argv[1]);
}

void echoChangyeobLeeCommand(client *c){
    addReplyBulk(c, c->argv[1]);
}

server.c의 경우, echoCommand와 동일하게 구현하였습니다.

 

- server.h

void echoCommand(client *c);
void echoChangyeobLeeCommand(client *c);

 

또한, server.h의 경우, server.c와 동일하게, 하단에 echoChangyeobLeeCommand() 를 정의하는 형태로 진행하였습니다.

 

- commends.def 

// 추가 내용 
{MAKE_CMD("echo","Returns the given string.","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,"connection",COMMAND_GROUP_CONNECTION,ECHO_History,0,ECHO_Tips,0,echoCommand,2,CMD_LOADING|CMD_STALE|CMD_FAST,ACL_CATEGORY_CONNECTION,ECHO_Keyspecs,0,NULL,1),.args=ECHO_Args},
{MAKE_CMD("echoChangyeobLee","Returns the given string.","O(1)","1.0.0",CMD_DOC_NONE,NULL,NULL,"connection",COMMAND_GROUP_CONNECTION,ECHO_History,0,ECHO_Tips,0,echoChangyeobLeeCommand,2,CMD_LOADING|CMD_STALE|CMD_FAST,ACL_CATEGORY_CONNECTION,ECHO_Keyspecs,0,NULL,1),.args=ECHO_Args},

commands.def 또한, 앞 과정과 동일하며, 인자 값에 대한 상세 설명은 하단 코드를 참고 부탁드립니다.

MAKE_CMD(
  "echoChangyeobLee",                  // [1] 명령어 이름
  "Returns the given string.",         // [2] 설명 (Documentation)
  "O(1)",                               // [3] 시간 복잡도
  "1.0.0",                              // [4] 도입 버전
  CMD_DOC_NONE,                        // [5] 추가 문서 (없음)
  NULL, NULL,                          // [6~7] key extract 함수 (begin, end)
  "connection",                        // [8] summary group
  COMMAND_GROUP_CONNECTION,            // [9] 명령어 그룹
  ECHO_History,                        // [10] 히스토리 배열
  0,                                   // [11] 히스토리 개수
  ECHO_Tips,                           // [12] 팁 배열
  0,                                   // [13] 팁 개수
  echoChangyeobLeeCommand,             // [14] 명령어 처리 함수
  2,                                   // [15] 인자 수 (arity)
  CMD_LOADING|CMD_STALE|CMD_FAST,      // [16] 플래그
  ACL_CATEGORY_CONNECTION,             // [17] ACL 범주
  ECHO_Keyspecs,                       // [18] key specs
  0,                                   // [19] key specs 개수
  NULL,                                // [20] replica flag
  1                                    // [21] 사용 여부 (enabled)
),
.args = ECHO_Args                      // [22] 명령어 인자 메타 정의

 

 

실행 결과는 아래와 같습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함