Infra & Cloud/AWS

[AWS] EC2 환경에서 Redis 구축하기

류건 2024. 7. 25. 15:28
반응형

0. redis란?

REmote DIctionary Server
‘키-값’ 구조의 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 in-momory data structure store

 

특징

○ In-memory data structure

문자열, hash, list, set, sorted set, stream 등의 자료형을 지원하는 “data structure server”

○ Programmability

Lua를 사용한 server-side scripting과 Redis Functions를 이용한  server-side 저장 과정

○ Persistence

빠른 액세스를 위해 데이터 세트를 메모리에 보관하지만, 재부팅 및 시스템 오류가 발생해도 영구 스토리지에 대한 모든 쓰기를 유지할 수도 있다.

○ Clusturing

해시 기반 샤딩을 통한 수평적 확장성, 클러스터 성장 시 자동 재파티션을 통해 수백만 개의 노드로 확장.

○ High availability

독립 실행형 및 클러스터된 배포 모두에 대해 자동 장애 조치가 포함된 replication.

 

 

1. EC2에 Redis 설치

$ sudo apt-get install redis-server
$ sudo apt-get install redis-cli

 

2. redis-cli에서 AUTH 설정하기

redis는 서버가 기본포트 6379로 열려있고 인증없이 접근이 가능하므로 보안상 매우 취약하다.

 

따라서 requirepass를 설정하거나 acl을 설정해주면 보안을 높일 수 있다.

 

1. requirepass 설정

$ redis-cli

127.0.0.1:6379> AUTH 비밀번호 (따옴표 없이 작성) // 없는 비밀번호는 접속 불가능
(error) ERR AUTH <password> called without any password configured for the default user. Are you sure your configuration is correct?

127.0.0.1:6379> CONFIG SET requirepass 비밀번호 // 따옴표 없이 작성
OK

127.0.0.1:6379> AUTH 비밀번호
OK

 

참고로 기호에 @를 사용하면 인식을 하지 못한다!

 

3. Redis 설정.

외부에서도 EC2 인스턴스에 설치된 redis에 접근할 수 있게 설정해야 한다.

$ sudo vi /etc/redis/redis.conf

 

입력하면 아래와 같은 화면이 나온다

 

기존에는 bind 127:0:0:1 ::1 이라고 기본적으로 설정이 되어있다.

이를 bind 0:0:0:0 으로 설정해준다!

 

 

또한 위와 같이 원격 접속 시 protected mode로 실행되므로 설정에서 protected-mode를 'yes'에서 'no'로 변경하여 보호 모드 비활성화한다.

 

 

4. EC2에서 Redis 실행

redis는 인메모리 데이터베이스이기 때문에 실행 중이어야 사용 가능하다.

따라서 ec2 인스턴스를 닫아도 사용할 수 있게 백그라운드 실행을 해주어야 한다.

$ sudo systemctl (re)start redis-server

 

service와는 달리 systemctl을 사용하면 백그라운드로 redis-server를 실행할 수 있다.

 

4. Redis 원격 접속

$ redis-cli -h <redis 서버 ip> -p <redis port> -a <password>

 

5. Redis 사용법

key, value는 따옴표 없이 입력 가능!

 

데이터 삽입, 조회, 삭제

value 삽입 : set [key] [value] 

value 조회 : get [key]

value 삭제 : del [key]

 

모든키 조회 : keys *

 

모든키 삭제 : flushall

 

만료일 조회 : ttl [key]

 

 


참고

https://0m1n.tistory.com/100

 

[Spring, Redis] AWS EC2환경 spring boot에서 redis 연결방법, 연결 안될때 (connection refused)

로컬에서는 redis 서버를 키고 스프링 부트 서버 실행 후 api 테스트를 진행하면 정상 작동하나, ec2환경에서는 정상작동하지 않았다. 결론적으로 redis 외부 접속을 허용해주어야 한다. 아래 전체

0m1n.tistory.com

https://wookgu.tistory.com/26

 

[Redis] AWS EC2에 redis-server setup 하기

이번 글에서는 AWS EC2에 외부에서 접속 가능한 redis-server를 setup 하는 과정을 정리해보겠습니다. EC2 인스턴스 생성 우선, redis-server를 설치할 EC2 인스턴스를 만듭니다. 저는 jony라는 이름의 ubuntu 18.

wookgu.tistory.com

https://xn--lg3bu39b.xn--mk1bu44c/96

 

redis-cli 비밀번호 설정하기

redis-cli redis 127.0.0.1:6379> AUTH "비밀번호" (error) ERR Client sent AUTH, but no password is set redis 127.0.0.1:6379> CONFIG SET requirepass "비밀번호" OK redis 127.0.0.1:6379> AUTH "비밀번호" OK

xn--lg3bu39b.xn--mk1bu44c

https://jang8584.tistory.com/290

 

redis 접속 방법 및 몇가지 명령어

접속 : redis-cli -h 서버주소 -p 포트 -a redis-cli --- 참고 1. 맥에서 redis 설치 -> brew install redis 2. 설치된 경로 2-1. redis 실행파일: /usr/local/bin/redis-server, redis-cli ... 2-2. redis 설정파일: /usr/local/etc/redis.conf

jang8584.tistory.com

https://velog.io/@coastby/Redis-Redis%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%82%AC%EC%9A%A9%EB%B2%95

 

[Redis] Redis의 특징과 사용법

REmote DIctionary Server‘키-값’ 구조의 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 in-momory data structure storeIn-Memory Data Strucrue storeOpen Source (BSD 3 License)Su

velog.io

 

반응형