본문 바로가기

리눅스

우분투에서 Redis를 소스 코드로 컴파일하고 설치하는 방법

반응형

우분투에서 Redis를 소스 코드로 컴파일하고 설치하는 방법

Redis는 "Remote Dictionary Server"의 약자로 키-값 구조의 비정형 데이터를 저장하고 관리하기 위한 고성능 오픈 소스 비관계형 데이터베이스 관리 시스템입니다. 2009년에 살바토레 산필리포에 의해 처음 개발되었으며 2015년부터는 Redis Labs에서 지원하고 있습니다.

 

  • Redis의 주요 특징
    1. 고성능: Redis는 메모리 기반 데이터 저장을 통해 매우 빠른 성능을 제공합니다.
    2. 다양한 데이터 구조: Redis는 문자열, 해시, 목록, 집합, 정렬된 집합, 비트맵, 하이퍼로그 로그, 지리 공간 인덱스, 그리고 스트림 등 다양한 데이터 구조를 지원합니다.
    3. 다양한 기능: Redis는 캐시, 메시지 브로커, 스트리밍 엔진, 분산 키-값 저장소 등 다양한 기능을 제공합니다.
  • Redis의 활용 분야
    1. 캐시: Redis는 애플리케이션 성능 향상을 위한 캐시로 활용됩니다.
    2. 메시지 브로커: 애플리케이션 간 데이터 전달을 위한 메시지 브로커로 사용됩니다.
    3. 스트리밍 엔진: 실시간 데이터 처리를 위한 스트리밍 엔진으로 활용됩니다.
    4. 분산 키-값 저장소: 대규모 데이터를 저장하기 위한 분산 키-값 저장소로 사용됩니다.
  • Redis의 다양한 언어 지원
    • Redis는 C, Python, Java, JavaScript 등 다양한 언어에서 사용 가능한 클라이언트 라이브러리를 지원하여 유연한 활용이 가능합니다.
  • 결론
    • 매우 인기 있는 오픈 소스 데이터베이스인 Redis는 빠른 성능, 다양한 데이터 구조, 그리고 다양한 활용 분야에서의 기능 등으로 인해 다양한 분야에서 선호되고 있습니다.

테스트 환경

  • 운영체제 버전 정보
$ lsb_release -d
Description:    Ubuntu 22.04.2 LTS

1. 필요한 패키지 설치

sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y pkg-config
sudo apt-get install -y gcc tcl

2. Redis 소스 코드 다운로드 및 압축 해제

wget https://github.com/redis/redis/archive/7.2.3.tar.gz
tar xzf 7.2.3.tar.gz
cd redis-7.2.3

3. 소스 코드 컴파일

make
make test
sudo make install
mv redis-7.2.3 /usr/local/redis
mkdir -p /var/lib/redis /var/log/redis

4. Redis 설정

  • Redis(redis.conf) 환경 설정
sed -i 's/bind 127.0.0.1 -::1/bind 0.0.0.0/g' redis.conf
sed -i 's/protected-mode yes/protected-mode no/g' redis.conf
sed -i 's/daemonize no/daemonize yes/g' redis.conf
sed -i 's/dir .\//dir \/var\/lib\/redis/g' redis.conf
sed -i 's/logfile ""/logfile "\/var\/log\/redis\/redis.log"/g' redis.conf
sed -i 's/# maxclients 10000/maxclients 10000/g' redis.conf
sed -i 's/appendonly no/appendonly yes/g' redis.conf
728x90
  • Open File(/etc/security/limits.conf) 개수 설정
cat <<EOF >> /etc/security/limits.conf

*       soft    nproc   unlimited
*       hard    nproc   unlimited
*       soft    nofile  65536
*       hard    nofile  65536
EOF
  • TCP backlog 설정(TCP backlog 경고)
echo "net.core.somaxconn = 65536" >> /etc/sysctl.conf
  • 오버커밋(memory overcommit)을 활성화 설정(overcommit_memory 경고)
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
sudo sysctl -p
  • Transparent Huge Pages(THP)를 비활성화 설정(THP 경고)
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local

5. Redis 실행(standalone mode)

src/redis-server
더보기

---

./src/redis-server /usr/local/src/redis-7.2.3/redis.conf

---

$ src/redis-server 
56031:C 24 Nov 2023 12:41:27.319 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
56031:C 24 Nov 2023 12:41:27.319 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
56031:C 24 Nov 2023 12:41:27.319 * Redis version=7.2.3, bits=64, commit=00000000, modified=0, pid=56031, just started
56031:C 24 Nov 2023 12:41:27.319 # Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf
56031:M 24 Nov 2023 12:41:27.320 * Increased maximum number of open files to 10032 (it was originally set to 1024).
56031:M 24 Nov 2023 12:41:27.320 * monotonic clock: POSIX clock_gettime
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 7.2.3 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                  
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 56031
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           https://redis.io       
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

56031:M 24 Nov 2023 12:41:27.320 * Server initialized
56031:M 24 Nov 2023 12:41:27.320 * Ready to accept connections tcp

6. Redis 프로세스 확인

ps -ef | grep -v grep | grep redis
$ ps -ef | grep -v grep | grep redis
root       56621       1  0 13:48 ?        00:00:00 ./src/redis-server 0.0.0.0:6379

7. Redis 클라이언트 실행

src/redis-cli -h 127.0.0.1 -p 6379 ping
$ src/redis-cli -h 127.0.0.1 -p 6379 ping
PONG

8. Redis 중지

src/redis-cli shutdown

 

이제 Redis가 소스 코드로 컴파일되어 설치되었습니다. 유의해야 할 점은 Redis를 컴파일한 디렉토리에서 명령어를 실행하고 Redis를 실행하거나 관리해야 한다는 것입니다. 데몬 모드로 Redis를 실행하면 백그라운드에서 실행됩니다.

 

참고URL

- Redis Documentation : Install Redis from Source

 

728x90
반응형