뉴스를 돌아다니다가 Redis가 나와서 머리를 싸맸다. '분명 어디선가 들어본 적 있는 것 같은데...'하고 고민하다가 깨달았다. 가장 최근으로는 두 달 쯤 전에 2021년 4월 DBMS 인기 순위라는 글을 작성하면서도 봤고, 학부 데이터베이스 강의를 들을 때 인메모리 데이터베이스로 몇 번 언급 됐다.
Redis(레디스)는 Remote Dictionary Server의 약자로, "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다.
4월에도 Key-Value Database 중에서 1위였는데, 이번 달도 마찬가지로 1위다.
레디스를 언제 사용하면 좋은지는 이 브런치 글에 잘 정리되어 있다.
레디스를 사용하는 예시로는
1. 운영 중인 웹 서버에서 키-값 형태의 데이터 타입을 처리해야 하고
2. I/O가 빈번히 발생해 다른 저장 방식을 사용하면 효율이 떨어지는 경우
I/O가 빈번한 경우를 들었지만, 가장 많이 사용되는 건 사용자의 세션 관리, 메시지 큐잉, API 캐싱이라고 하셨다. I/O가 빈번한 경우가 가장 이해하기 쉬운 예시라서 그런 것 같다.
그래서 도커에서 레디스는 어떻게 사용하면 되는걸까? 간단하다. 도커 허브에서 redis 이미지를 다운로드 받아서 서버를 실행하고, 클라이언트에서 명령어를 보내면 된다.
마침 나는 두달 쯤 전에 설치를 해놨다.
redis를 제외한 이미지들은 사용하지 않을거니까 삭제했다.
1. 레디스 서버 실행
docker run redis
명령어를 입력해서 레디스 서버를 실행한다. 만약 레디스가 설치되지 않았어도, 도커가 알아서 설치하고 실행도 한다.
터미널에서 서버를 실행하면 더이상 명령어는 입력할 수 없게 되므로 다른 터미널을 열어야 한다.
이런식으로 탭을 추가해도 되고, 새로운 창을 열어도 된다.
2. 레디스 클라이언트 실행
docker exec -it <컨테이너 ID> redis-cli
클라이언트도 도커 컨테이너에서 실행해야 한다.
왜냐면
레디스 서버는 이렇게 도커 컨테이너 내부에서 실행되고 있기 떄문이다.
이렇게 컨테이너 내에서 실행을 해줘야 한다. 도커에서 이미 실행중인 컨테이너 내부에 명령어를 사용할 때는 exec를 사용하니까, 'docker exec -it <레디스 서버를 실행한 컨테이너 ID> redis-cli' 를 입력해 준거다.
-it 는 exec의 옵션으로 상호작용할 수 있는 터미널이라고 생각하면 된다.
3. 끝
이제 해보고 싶었던 것을 해보면 된다. 이왕 켰으니 명령어 하나 사용해볼까 생각했는데 set 을 입력하자마자 어떻게 사용해야 하는지 연회색으로 나온다.
역시 새로운 도구를 사용할 때는 hello world 니까 hello를 key로 world를 value로 설정했다. 재밌다.
'DevOps > Docker' 카테고리의 다른 글
[Docker] VM vs Container (0) | 2023.12.16 |
---|---|
[도커]도커 이미지 만들기(Dockerfile, commit) (0) | 2021.06.13 |
[도커]docker image rm vs docker rmi (0) | 2021.06.04 |
[도커]헷갈리는 기본 명령어(create, start, run, stop, rm) (1) | 2021.06.02 |
[도커]네트워킹 (0) | 2021.06.02 |