레디스를 사용하게 된 배경
-우리의 플랫폼에서 회원가입을 할때 크리에이터라는 등급으로 회원가입을 하려면 이메일인증을 받아야 한다.
이 이메일 인증 과정이
1. 처음 회원가입 양식을 작성하고 제출하면, 제출한 데이터중 이메일로 임의로 발급한 uuid를 담아서 발송한다.
2. 그리고 사용자가 해당 이메일을 열람해 회원가입 버튼을 클릭하면 발급했던 uuid를 담아서 내가 지정한 라우터로 다시 요청을 보낸다.
3. 요청을 받으면 해당 사용자에게 발급한 uuid가 일치한지 확인 후 일치한다면 회원가입을 시켜준다( = db에 저장)
이 과정에서 크리에이터의 회원가입을 위한 데이터를 어떻게 처리할지 고민을 하게 되었다. 이메일 인증까지 완료해야 회원가입을 시켜주어야 하기 때문에 인증이 완료 될 때까지 데이터를 들고 있긴 해야하는데...
객체 형태로 이메일 인증하는 곳에 넘겨서 여기저기 들고 다니는 것은 보안상 말도 안돼고 인증이 완료 될 때까지 db에 저장하려니 자원이 너무 낭비되는 것 같았다.
그래서 고민하던 중 캐시를 사용해보라는 힌트를 얻어 redis를 사용하게 되었다.
Redis란?
레디스 공식 페이지에 가면 더 자세하고 정확한 설명이 있기때문에 간단하게만 설명하고 넘어가겠다.
쉽게 말해서 Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 비관계형 데이터 베이스 관리 시스템이다.
캐시라는 단어를 많이 들어봤을 텐데 캐시 서버로 이용할 수 있는 것이 Redis 이다!
DB 에 직접 접근해 데이터를 처리하는게 아니라 한번 읽어온 데이터를 임의의 공간에 저장해 다음에 읽을 때
빠르게 결과값을 받을 수 있도록 도와준다. 그래서 db의 부하를 줄이고 서비스의 속도를 향상하는 방법중 하나가 될 수 있다!
우리끼리 개발을 하면서 데이터 운용을 해보기 때문에 과부하가 걸리는 상황이 많지 않아서 db를 조회할때마다 부하가 걸리는 것을 고려하지 못했는데 또하나 알게 되었다ㅎㅎ
일단 redis를 프로젝트 내에 설치하고 사용하려고 하니 에러가 빵빵 터졌다ㅋㅋㅋㅋ
처음엔 모듈이나 라이브러리를을 갖다 쓰는 것처럼 npm install을 한 후 사용하는 줄 알았는데 '캐시 서버' 임을... 깨닫기까지 몇시간 걸렸다...ㅎㅎ
여튼 이후 여차저차 헤매다가 내 컴퓨터에 redis 서버를 열어두기로 했다. ( 레디스 cloud 서비스도 있더라! 참고하시길)
Redis 설치하기
1. 설치파일 다운
https://github.com/MSOpenTech/redis/releases
로 접속해서
요걸 받아준다
이것은 Windows 3.2에서 Redis의 첫 번째 릴리스입니다.
이 릴리스는 antirez/redis/3.2.1과 일부 Windows 관련 수정 사항을 기반으로 합니다.
모든 표준 테스트를 통과했지만 프로덕션 환경에서 테스트되지 않았습니다.
따라서 프로덕션 환경에서 이 릴리스를 사용하기 전에 자체 테스트 환경에서 철저하게 테스트해야 합니다.
자세한 내용은 릴리스 정보를 참조하십시오.
라는 살벌한 문구가 적혀있지만ㅋㅋ 어느 정도 검증되었다면 최신버전을 선호하기 때문에 3.2.100을 다운받는다!
2. 다운받은 파일의 압축해제하기(관리자 권한으로!!)
나는 찾기 쉽도록 C 드라이브 최상단에 redis라는 폴더를 만들어서 압축해제했다.
3. 압축해제한 폴더 안으로 들어가보면 다음과 같이 파일들이 있다.
redis.windows-service.conf 라는 파일명을 redis.conf 로 수정한다
4. 이름을 수정한 redis.conf 파일을 다른 코드 수정 프로그램으로 연다
5. 패스워드 설정하기
"# requirepass foobared" 검색해서 "requirepass redis6379" 로 변경
6. redis-server 실행
더블클릭한다
7. 성공!
8. 잘 설치 되었나 다시 확인해보려면
redis-server.exe 를 닫고
cmd창을 새로 켜서 redis를 압축 해제 했던 디렉토리로 이동한다.
* 이것 때문에 미리 C: 드라이브에 폴더를 만들어서 압축을 풀어둔 것
9. 그리고 다음 명령어를 실행한다.
redis-server --service-install redis.conf --service-name redis6379
redis-server --service-start --service-name redis6379
redis-cli -p 6379
auth redis6379
ping 이라고 쳤을때 pong이라는 답이 오면 redis 서버가 로컬에서 잘 돌아가고 있다는 뜻이다.
+) 추가
외부접속을 하도록 해주려면 수정해줄것이 더있다.
redis.conf 파일에서 bind 라는 항목을 찾아야 한다.
bind 127.0.0.1 => bind 0.0.0.0
수정한다음 redis를 다시 껐다 켜줘야한다.
ubuntu 라면?
sudo systemctl restart redis
window라면?
redis-server --service-stop --service-name redis6379 // 종료
redis-server --service-start --service-name redis6379 // 시작
// +) 추가로
redis-server --service-uninstall --service-name redis6379 // redis 해제하기
728x90
'블록체인기반 SW 개발자 과정(feat.경일게임아카데미) > 기업협업 프로젝트' 카테고리의 다른 글
<기업협업 프로젝트> 프로젝트 설계 (0) | 2023.03.08 |
---|