사용 방법
메인페이지(전체 데이터 조회)에서 open api 많은 데이터를 가져와야했다. 나는 웹 서버용 ec2 인스턴스와 redis 서버용 인스턴스를 따로 만들어 포트를 연동시켜줬다. 서로 다른 인스턴스를 생성한 이유는 아래와 같다.
- 같은 인스턴스에서 작업시 둘중 하나가 메모리를 많이 사용했을 때 다른 하나는 다운될 수 있다.
- 인스턴스가 죽었을 때 다른 하나의 데이터라도 살릴 수 있다.
만약 인스턴스 실행시 redis실행을 자동화 하고싶다면 인스턴스를 생성할 때 고급 세부정보 아래칸의 사용자 데이터에 레디스 설치와 실행등을 수행하는 파일 경로를 지정해주면 된다.
- 내가 작성한 redis_setup.sh 파일 내용은 아래와 같다. 파일을 작성했다면 chmod +x redis_setup.sh로 실행 권한을 부여해야한다. 그리고 혹시나 아래의 파일을 수동으로 한번에 실행시키고싶다면 현재 파일 위치라 가정하고 ./redis_setup.sh 명령어로 가능하다.
#!/bin/bash
# redis 설치
sudo apt update
sudo apt install -y redis-server
# background에서 redis 실행
sudo nohup redis-server &
# 서버 실행하는데 잠깐의 여유시간 주기
sleep 5
# 에러 방지용
redis-cli CONFIG SET protected-mode no
# 실행 상태 확인
sudo systemctl status redis-server
아래는 redis를 프로젝트와 연동하며 발생한 에러 몇 가지를 정리해보았다
WRONGPASS invalid username-password pair
->
1. redis username, password가 맞지 않는다는 에러이다. /etc/redis/redis.conf 파일에서
password 설정을 따로 해줘야 했고 sudo vi /etc/redis/redis.conf 명령어를 통해 파일을 열 수 있다.
2. /requirepass로 해당 부분을 검색할 수 있고 requirepass <비밀번호> 를 입력해 redis password를
설정할 수 있다.
3. 이제 redis를 다시 시작해보고 혹시 AUTH와 관련된 에러가 발생한다면 AUTH <username> <password>
를 입력해 인증해야한다. 이후에 redis-cli ping 명령어로 redis 가 실행중인지 확인 가능하고 제대로
연결이 되었다면 pong라는 답이 돌아온다.
DENIED Redis is running in protected mode because protected mode is enabled,
no bind address was specified, no authentication password is requested to clients
->
1. Redis가 보호 모드에서 실행 중이라는 내용이고 redis.conf 파일에서 bind 주소와 암호를
수정해줘야 한다. 기본으로 설정되어있는 bind 주소는 127.0.0.1 ::1 이런 형태로 저장되어 있고 0.0.0.1로
수정해야 한다.
2. 수정을 완료했다면 sudo systemctl restart redis-server 명령어를 통해 redis를 다시 시작하자.
3. 다시 시작을하고 설정한 암호를 입력해야 한다 redis-cli -a <비밀번호>
이외에도 명령어와 관련된 오류가 발생하면 인증 유저의 명령 권한을 열어줘야 한다.
->
1. redis.conf 파일에 들어가 user <username> on > <password> ~* allcommands를 입력해
권한을 열어주면 된다.
'공모전' 카테고리의 다른 글
[공모전] AxiosError request failed with status code 500 (0) | 2023.07.08 |
---|---|
[공모전] 메인페이지 전체조회 속도 개선 (0) | 2023.06.27 |
[공모전] MySQL db와 연동했지만 h2가 연결되었던 문제 (0) | 2023.06.22 |
[공모전] xml파일 변환 (0) | 2023.06.18 |
[공모전] 애자일/폭포수 (0) | 2023.06.17 |