on
[Redis]
[Redis]
레디스?
Redis(REmote Dictionary Server)
메모리 간반의 키-값 구조 데이터 관리 시스템
모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터베이스(NoSQL)
레디스 사용 이유?
메모리에 저장하여서 MySQL과 같은 데이터베이스에 데이터를 저장하는 것과 불러올 때 빠르게 처리 가능
메모리에 영속적으로 보관 가능, 서버 재부팅 하여도 데이터 유지 가능
node.js 환경에서 redis 사용
redis 클라를 사용하기위해 docker run redis하여 redis server 킴
1. redis모듈 다운
package의 dependencies에 모듈 넣어줌
2. 레디스 클라이언트 생성위해 createClient() 함수 이용, redis.createClient로 레디스 클라이언트 생성
3. 함수안에 호스트와 포트는 필수이며 redis의 기본 포트는 6379
4. 호스트는 도커환경일때, 도커환경이 아닐때 넣어주는게 다름
도커를 사용하지 않을때 redis 서버가 작동하는 곳이 redis-server.com이면 "https://redis-server.com" 으로 호스트
도커 compose를 이용하기때문에 호스트는 docker-compose.yml 파일에 명시한 컨테이너 이름 주면됨
dockerfile 하고 index.js 설정 다 하여
docker run chaem0215/docker-ex-compose 했는데 아래와 같은 에러가 남
컨테이너간 통신할 때 설정해주어야함, 설정해주지 않으면 접근이 안됌
nodejs, redis 클라와 redis 서버가 각각 다른 컨테이너에있음
이런 멀티 컨테이너일때 네트워크를 연결해주기 위해 Docker compose.yml 사용
yml >> 구성 파일 및 데이터 저장 또는 전송되는 응용 프로그램에서 사용, XML과 json 보다 읽기 쉬운 포맷이 yaml
이 설정 이용
docker-compose up 하여 실행 (이미지가 없을때 이미지 빌드하고 컨테이너 시작)
docker-compose up --build : 이미지 유무 상관없이 이미지 빌드하고 컨테이너 시작
docker compose down 으로 컨테이너 한번에 중단
뒤에 -d 추가로 해주면 앱을 백그라운드에서 실행한다는 것, output 표출하지않음
from http://chaem0215.tistory.com/71 by ccl(A) rewrite - 2021-08-10 19:59:51