우분투(Ubuntu) Redis 설치(Install) & TLS 적용

Hognod·2023년 8월 7일

1. Package Install

sudo apt update
sudo apt install -y make build-essential pkg-config libssl-dev

2. Source 파일 다운로드

wget https://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz

3. Redis 컴파일

cd redis-stable/deps
make hdr_histogram hiredis jemalloc linenoise lua

4. Redis 빌드

4.1. TLS 미적용

cd ..
make

4.2. TLS 적용

cd ..
make BUILD_TLS=yes

만약 정상적으로 빌드되지 않고 에러 발생 시 아래 명령어 입력 후 재 컴파일 및 빌드 진행

make distclean

5. Redis 설정

5.1. TLS 미적용

vi redis.conf
...
bind 0.0.0.0
...
requirepass <패스워드 지정>
...

5.2. TLS 적용

vi redis.conf
bind 0.0.0.0
...
# port 6379
...
port 0
tls-port 6379
...
tls-cert-file <.crt 파일 경로>
tls-key-file <.key 파일 경로>
...
tls-ca-cert-file <CA .crt 파일 경로>
...
requirepass <패스워드 지정>
  • port 6379로 설정되어 있던 기존 port를 주석 처리
  • 주석 처리 되어 있던 port 0, tls-port 6379 주석 해제

6. Service 파일 작성

sudo vi /lib/systemd/system/redis-server.service
[Unit]
Description=Advanced key-value store
After=network.target
Documentation=http://redis.io/documentation, man:redis-server(1)

[Service]
ExecStart=/home/ubuntu/redis-stable/src/redis-server /home/ubuntu/redis-stable/redis.conf
ExecStop=/home/ubuntu/redis-stable/src/redis-cli shutdown
Restart=always
User=root
Group=root

[Install]
WantedBy=multi-user.target
Alias=redis.service
  • ExecStartExecStop의 경로는 Redis Soruce 파일 설치 경로로 지정
sudo systemctl daemon-reload
sudo systemctl start redis-server.service

7. Redis Server 동작 확인

7.1. TLS 미적용

/home/ubuntu/redis-stable/src/redis-cli
auth <패스워드>
hello

아래 내용이 출력된다면 정상적으로 Redis Server가 실행된 것

 1) "server"
 2) "redis"
 3) "version"
 4) "7.0.12"
 5) "proto"
 6) (integer) 2
 7) "id"
 8) (integer) 3
 9) "mode"
10) "standalone"
11) "role"
12) "master"
13) "modules"
14) (empty array)

7.2. TLS 적용

/home/ubuntu/redis-stable/src/redis-cli --tls --cert <.crt 경로> --key <.key 경로> --cacert <CA .crt 경로>
auth <패스워드>
hello

아래 내용이 출력된다면 정상적으로 Redis Server가 실행된 것

 1) "server"
 2) "redis"
 3) "version"
 4) "7.0.12"
 5) "proto"
 6) (integer) 2
 7) "id"
 8) (integer) 3
 9) "mode"
10) "standalone"
11) "role"
12) "master"
13) "modules"
14) (empty array)

8. Redis Usage

8.1. 데이터 입력

set <Key> <Value>
set test-key test-value
OK

8.3. 데이터 출력

get <Key>
get test-key
"test-value"

8.4. 데이터 중복 처리

[nx]

set test-key nx-test nx
(nil)

데이터 입력 시, nx를 붙이게 되면 이미 존재하는 Value가 있을 경우 에러 출력 후 새로운 Value로 수정하지 않음

[xx]

set test-key xx-test xx
get test-key
"xx-test"

데이터 입력 시, xx를 붙이게 되면 이미 존재하는 Value가 있을 경우에만 새로운 Value로 덮어씀

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

유익한 글이었습니다.

답글 달기