본문 바로가기

Server

Redis(NoSql) 설치 및 세팅하기

반응형

AWS EC2 인스턴스 Ubuntu 환경기반

 

설치하기전 패키지들을 업데이트하기

$ sudo apt-get update
$ sudo apt-get upgrade

 

이후 명령어를 통해 Redis를 설치

sudo apt-get install redis-server

 

설치가 완료되었다면 
Redis의 설정파일 경로는 

/etc/redis/redis.conf 해당 경로에 설정파일이 존재합니다.

설치한 이후에 redis의 설정파일의 권한을 보면

640(rw- r-- --)으로 루트 권한으로만 쓰기가 적용되어있기때문에 

sudo vi redis.conf를 사용하여 진입하거나 Root 계정으로 접속하여 편집기를 통해
설정파일에 진입하면됩니다.

 

설정파일에서 사용자가 변경할 핵심 내용으로는 

1. #bind 127.0.0.1 :: 1 

이 설정은 Redis 서버가 어떤 IP 주소에서 요청을 수락할지를 결정하는 곳

 

2. #maxmemory <bytes>

Redis가 사용할 수 있는 최대 메모리 크기를 지정합니다. 메모리 사용량이 이 값을 초과하면 Redis는 더 이상 데이터를 저장하지 않습니다.

예) maxmemory 1048mb

 

3. #requirepass foobared

Redis 서버에 접근할 때 사용할 비밀번호를 지정합니다. 설정된 비밀번호를 사용하지 않으면 Redis 서버에 접근할 수 없습니다.

 

4. #maxmemory-policy

Redis가 메모리 사용량이 maxmemory 설정을 초과할 때 어떤 데이터를 제거할지 결정하는 정책을 정의합니다

 

이렇게 4가지가 있습니다.

 

필자는 ubuntu환경에 vim편집기를 사용중이니

sudo vi redis.conf

편집기로 접근하여 

 

ESC를 누른후   : 를 눌러 명령어 모드로 진입후 

/검색할단어 , ?검색할단어 를넣어 Enter 후 

n : 다음 찾기

N : 이전 찾기 

를 이용하여 수정할 내용 4개 를 찾으면 됩니다.


첫번째로는 외부접속입니다.

 

초기 상태라면 해당부분이  #bind 127.0.0.1 :: 1로 되어있는데 주석을 풀고 아이피부분에 

0.0.0.0:1 을 넣어 전부 접속가능으로 변경해줍니다.

보안을 신경쓰신다면 특정 IP를 넣어주시면됩니다.


두번째로는 Redis에 저장공간 할당입니다.

같은 방법으로 해당 줄을 찾아주신다음에 

 

초기에는 #maxmemory <bytes> 으로 설정되어있습니다.

이곳에 주석을 풀어주시고 maxmemory 500mb를 작성후 저장소의 공간을 설정해주시면됩니다.


세번째로는 Redis 서버에 접근할 때 사용할 비밀번호를 지정입니다.

requirepass 단어를 검색하여 찾아주시고 

초기에는 #requirepass foobared 로 설정되어있습니다.

이후 주석을 풀어준뒤 foobared부분에 사용하실 password를 넣어주시면됩니다.


네번째로는 Redis가 메모리 사용량이 maxmemory 설정을 초과할 때

어떤 데이터를 제거할지 결정하는 정책설정 입니다.

 

maxmemory-policy를 검색하여 찾아주시고

주석푼뒤 policy 뒤에 사용하실 정책을 적어주시면됩니다.

 

Redis의 메모리 정책 종류

1. volatile-lru: 만료 설정이 있는 키 중에서 LRU(Least Recently Used) 정책에 따라 가장 오래된 키를 제거합니다.

2. allkeys-lru: 모든 키 중에서 LRU 정책에 따라 가장 오래된 키를 제거합니다.

3. volatile-lfu: 만료 설정이 있는 키 중에서 LFU(Least Frequently Used) 정책에 따라 가장 적게 사용된 키를 제거합니다.

4. allkeys-lfu: 모든 키 중에서 LFU 정책에 따라 가장 적게 사용된 키를 제거합니다.

5. volatile-random: 만료 설정이 있는 키 중에서 무작위로 키를 제거합니다.

6. allkeys-random: 모든 키 중에서 무작위로 키를 제거합니다.

7. volatile-ttl: 만료 설정이 있는 키 중에서 TTL(Time to Live)이 가장 적게 남은 키를 제거합니다.

8. noeviction: 메모리가 가득 차면 새로운 데이터를 추가할 때 오류를 반환하고 기존 데이터를 제거하지 않습니다.

 

maxmemory-policy 옵션은 어떠한 서비스를 사용하냐에 따라 다르지만 

적절하게 성능과 데이터 보존간의 균형을 맞추고싶다면 allkeys-lru 를 선택하는게 좋습니다.


 

설정을 마쳤다면 ESC -> :로 명령어모드에서 wq를 사용하여 저장후 나오신후에 

 

sudo systemctl daemon-reload

 

명령어를 사용하여 Redis에서 설정한것들을 적용해주신다음에 

 

sudo systemctl status redis

 

명령어를 통해 Redis가 실행중인지 확인합니다.

 

다음으로 외부에서 Redis를 접근하려면 Redis의 Default Port를 열어줘야합니다.

Redis의 기본 포트는 6379입니다.

sudo ufw allow 6379

 

해당 명령어를 사용하여 6379 포트를 열어줍니다.

 

포트를 열어줬다면 

 

ubuntu 환경에서 명령어줄에 

redis-cli

redis-cli -h 서버IP -p 6379

 

둘중 한개를 입력하여 redis-cli에 접속합니다 

 

접속이후 잘 작동하는지 확인하는 방법으로는 

redis-cli 접속이후 ping을 치시면 pong이 반환이됩니다.

 

하지만 지금은 접속만 하였기때문에 사진과 같이 인증이 필요하다고 뜹니다.

왜냐하면 redis.conf에서 비밀번호 설정을 했기때문에 정상적으로 뜨는 에러입니다.

 

이때는 

redis-cli
AUTH 설정한 비밀번호

 

redis-cli 접근후 AUTH 설정한 비밀번호 입력후 엔터를 치신뒤에 

ping을 치게되면 PONG으로 반환됩니다.

 

 

정상적으로 PONG을 반환받으셨다면 

Redis 설정이 완료되었습니다.

 

반응형

'Server' 카테고리의 다른 글

[Docker] 이미지 및 컨테이너 가이드 ( 2 )  (3) 2024.09.01
[Docker] Docker 개념 ( 1 )  (2) 2024.08.30