나만의 작은 도서관

[TIL][C++] 250729 MMO 서버 개발 68일차: C++에서 레디스를 사용하기 위한 라이브러리 - HiRedis / Redis++ 본문

Today I Learn

[TIL][C++] 250729 MMO 서버 개발 68일차: C++에서 레디스를 사용하기 위한 라이브러리 - HiRedis / Redis++

pledge24 2025. 7. 30. 03:25
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 

C++에서 레디스를 사용하기 위한 라이브러리 - HiRedis

  • C++언어에서 레디스를 사용하기 위해선 레디스 라이브러리를 다운로드하여 프로젝트에 적용해야 한다. 이때 가장 대표적인 라이브러리가 “hiredis”라는 라이브러리이다.
  • hiredis는 C 언어를 기반으로 만들어진 Redis 클라이언트 라이브러리로, C 문법으로 이루어져 있기 때문에 C++ 방식으로 사용하기 조금 불편함 감이 있다는 단점이 있다.

 

HiRedis를 C++ / VisualStduio(MSVC) 환경에 적용하기(CMake버전)

  • C++은 전통적으로 “내가 직접 통제하고 관리한다”는 문화가 강한 언어여서 그런지 npm과 같은 역할을 하는 vcpkg가 있음에도 불구하고 직접 깃헙에서 라이브러리 파일을 가져와 프로젝트에 적용하는 CMake방식을 쓰는 것 같다.
    • (vcpkg를 안쓰는 정확한 이유는 모르겠다. 그저 강의나 자료를 보면 대부분 CMake 방식으로 설정한다…)
  • 따라서 npm install과 같이 vcpkg를 이용하면 “딸깍”으로 라이브러리를 적용할 수 있을 것 같지만, CMake 방식으로 적용해 보았다.

 

1. 레디스 깃헙에서 라이브러리를 다운로드한다.

  • 내리다 보면 Assets라는 이름의 토글 목록이 있는데, 여기서 소스 파일을 받으면 된다. 윈도는 zip 확장자를 받으면 된다.

 

 

2. CMake에 넣고 돌린다.

  • 많은 경우, C++ 라이브러리는 CMake를 활용해서 필요한 라이브러리 파일(. lib,. dll)을 얻어낸다. 다운로드한 라이브러리가 CMake를 활용하는지 알고 싶다면 내부 파일에 cmake 확장자와 MakeFile이 있는지 확인하면 된다.

  • CMake는 PC에 없으면 다운로드한다. 구글에 검색하면 최상단에 뜨니 헷갈릴 일은 없을 것이다.
  • CMake와 소스 파일이 준비되었다면, CMake를 실행시킨 다음, 소스 파일 경로와 결과를 저장할 폴더를 설정한다.
    • Where is the source code에는 소스 파일 경로를,
    • Where to build the binaries에는 결과를 저장할 폴더 경로를 넣는다.(바탕화면에 새 폴더를 만들어 지정하는 것을 추천)
  • 경로를 지정했다면, 왼쪽 하단에 있는 Configure를 누른다. 그런 다음 옵션을 설정해 주면 된다.

 

 

3. 결과물에서. sln 파일을 찾아 실행시켜 Debug/Release모드로 빌드를 한 번씩 해준다.

  • 빌드를 실행해 주면 Debug/Release 폴더가 하나씩 생기는데, 안에 들어가 보면 lib, dll과 같은 라이브러리 폴더가 들어있다. (지금까지 과정은 이걸 얻으려고 한 것)
  • Debug/Release 설정은 상단 바에 있는 드롭다운에서 설정할 수 있다.

 

 

 

4. 얻은 라이브러리 파일을 프로젝트 폴더에 넣고 경로를 설정한다.

  • 관리의 용이성을 위해 프로젝트 폴더 아래에 Libraries폴더를 따로 파는 것을 추천한다. 대충 아래와 같은 계층구조로 넣어주면 된다.
    • 깃헙에서 다운로드한 소스 파일은 include/hiredis에 넣고, 설루션 빌드해서 얻은 라이브러리 파일은 Libs폴더에 넣는다.
📁 Libraries/
├── 📁 include/
│   ├── 📁 hiredis/
│   │   │   ├── 📄 alloc.h
│   │   │   ├── 📄 hiredis.h
│   │   │   └── 📄 read.h
│   │   │   └── 📄 기타 등등...
├── 📁 Libs/
│   ├── 📁 hiredis/
│   │   ├── 📁 Debug/
│   │   │   ├── 📄 hiredisd.lib
│   │   │   ├── 📄 기타 등등...
│   │   ├── 📁 Release/
│   │   │   ├── 📄 hiredis.lib
│   │   │   ├── 📄 기타 등등...

 

 

5. 프로젝트 안에서 라이브러리 경로를 설정해 준다.

  • 프로젝트 내에서 넣은 소스파일과 라이브러리를 읽을 수 있도록 경로를 설정해 준다.
  • 프로젝트 설정 → 구성 속성 → VC++ 디렉터리에서 포함 디렉터리와 라이브러리 디렉터리를 찾는다.
    • 포함 디렉터리에는 $(SolutionDir)Libraries\include\를 넣고
    • 라이브러리 디렉터리에는 $(SolutionDir)Libraries\Libs를 넣는다.
  • 그다음 코드 내에서 아래와 같이 라이브러리 경로를 추가로 알려준다.
#ifdef _DEBUG
#pragma comment(lib, "HiRedis\\Debug\\hiredisd.lib")
#else
#pragma comment(lib, "HiRedis\\Release\\hiredis.lib")
#endif
  • -끝-

 

C 언어는 불편하니 C++로 Redis를 사용하자 - redis++

  • C++로 통일하여 redis를 사용하고 싶다면, redis++ 라이브러리를 사용하는 것이 좋다.
  • redis++은 hiredis를 기반으로 만들어진 C++ 래퍼 라이브러리로, 반드시 hiredis가 존재해야 한 사용할 수 있는 라이브러리이다.
  • CMake방식으로 똑같이 적용하면 된다. 단, 주의사항이 있다.

https://github.com/sewenew/redis-plus-plus

 

GitHub - sewenew/redis-plus-plus: Redis client written in C++

Redis client written in C++. Contribute to sewenew/redis-plus-plus development by creating an account on GitHub.

github.com

 

Redis++를 CMake로 돌릴 때 주의사항- hiredis 경로 설정

  • redis++은 hiredis의 래퍼 라이브러리이기 때문에 반드시 기존 hiredis의 정보를 알고 있어야 한다. 따라서 cmake를 설정할 때도 hiredis의 폴더 경로를 미리 알려줘야 한다.
  • 따라서, 아래에서 HIREDIS_HEADER와 HIREDIS_LIB를 설정해줘야 한다. 앞에서 프로젝트에 미리 넣어놨으니 프로젝트 경로를 활용하면 된다. (각각 프로젝트의 include/hiredis, Libs/hiredis 경로를 찾아 넣어주면 된다.

  •