본문 바로가기
Redis

[OSSCA Redis] Redis 오픈소스 컨트리뷰션 Week3

by 개복취 2023. 10. 23.


<Week 3 Assignment>

  • Redis 에 간단한 명령을 추가해보기
    • 받은내용을 그대로 다시 돌려주는 echo 명령을 만들기
    • src/ 내부에 commands.* 로 되어있는 파일들을 참고하기
  • redis-cli를 실행한 후 echo {영어이름} abc 해서 결과가 abc로 나오면 된다.

 

src/commands.def

먼저 commands.def 파일을 뜯어보면 상단부에 generate-command-cody.py 에서 코드가 자동생성 된다고 한다. 친절하게도, 내용을 건들지 말라고까지 적혀있다. 

connection 그룹에 echo라는 명령어가 어떤 역할을 하는지 나타나있다. 새로운 명령어를 추가하면 echo 명령어 밑에 추가될 것 같다.

 

 

utils/generate-command-code.py 

generate-command.py 에서 command를 생성하는 소스코드이다.

빨간색 밑줄친 부분을 보면 commands/ *.json 의 내용을 가져와 명령어를 만들어 내는것을 알 수 있다.

경로로 지정된 src/commands/echo.json 을 확인하고 echo + {영어이름} 의 형태로 .json 파일을 만들어주면 될 것 같다.

 

 

src/commands/echo.json, echojangho.json

echo 와 동일하게 작동하는 command 를 만들기 위해 echojangho.json 파일을 만들어주고 내용을 동일하게 복붙하면 된다.

기존 echo는 echoCommand 의 함수를 가져와서 사용한다. echojangho에서는 echoJangHoCommand를 정의해서 사용하자

해당 함수는 src/server.c 에 정의되어있다.

 

src/(server.c / server.h)

src 내부의 server.c 파일에 정의되어있는 echoCommand 와 동일하게 작동하는 echoJangHoCommand를 정의해주었다.

echojangho 가 echo 와 동일하게 작동하는지 redis 를 다시 컴파일 시켜보자

새롭게 정의한 echojangho 커맨드가 잘 작동하는것을볼 수 있다.

그럼, 다시 command.def으로 돌아가 echojangho가 알맞게 정의되어 있는지 다시한번 확인해보자

 

예상한대로, echo 밑에 echojangho가 정의되어 있는것을 확인해 볼 수 있다.