[Redis] 도커(Docker)로 Redis 설치하기




Django X Redis X Celery

Django에서 Cache Backend로 사용하고 Celery의 메세징 큐로 사용하기 위한 Redis를 설치해 보겠습니다. 기본 워크플로우는 Celerybeat가 또는 직접 작업지시를 했을 경우, 작업을 Redis 큐에 넣고 Celery worker 가 Django안에 정의된 대로 일을 수행하는 플로우 입니다. 아.. 없었으면 큰일이었을꺼에요. 따로 뒤에서 데몬을 계속 돌려야 하거든요. 현재, 딩그르르는 Google Analytics로부터 데이터를 가지고 오는 작업을 비동기로 수행하고 있습니다. (5분에 한번) 



비동기 왜 써야 해요?

어쨌든 우리의 views.py 에서 작업을 진행하는 Thread는 하나 입니다. 한 사람이 모든 일을 진행하다가 작업시간이 길어지는 일이 생기면, 사용자 경험이 안좋아 집니다. 느려지거든요. 물론, NginX가 멀티쓰레드로 돌기 때문에 내 작업이 길어진다 해도 다른사람에게는 별 피해를 안주겠지만, 그래도 비동기로 돌리고 싶다면, 반드시 써야 합니다. Django 는 지금 async def 를 만들고 있습니다. 비동기는 요즘 뭐 기본이니까요. 근데 언제 나올지 모르고, 이미 Celery로 하면 아주 안정적으로 구현이 가능합니다.



메세지 큐는 레디스만?

RabbitMQ도 있고 메세지 큐로 쓸만한 좋은 어플리케이션은 많이 있습니다. 특히 RabbitMQ는 많은 기업에서도 사용하고 있고 도커에서 따로 돌리면 글로벌로 돌아가기 때문에 매우 안정적입니다. 제가 Redis를 쓰는 이유는 따로 RabbitMQ를 돌릴 만큼 리소스도 없거니와 Django Cache Backend를 위해 설치한 Redis에 꼽사리껴서 사용하게 하기 위함입니다. 

'Redis를 이용한 캐싱하기' 글 보기



Redis 설치

도커로 설치할 것 입니다. 우선 도커를 설치하세요. 윈도우라면 Docker Desktop을 설치하면 됩니다(재부팅 해야해요.. ㅜ) 프로덕션을 위한 리눅스 서버 라면 아래와 같이 도커를 설치해주세요.

curl -fsSL https://get.docker.com/ | sudo sh


그리고 도커는 기본적으로 루트 권한이 필요합니다. 

sudo usermod -aG docker dingrr # dingrr 사용자에게 권한

ubuntu나 centos가 아니신분들은 여기 도커 공홈 에서 도움을 받으세요.


하나씩 따라 가봅시다. 우선 아래처럼 입력합니다.


$ docker pull redis

** 설치합니다.


$ docker images

** 설치된 이미지가 보이실 거에요.


그리고 굳이 redis-cli를 통해 redis안에 데이터를 안보셔도 되시는 분이라면 바로 구동하시고, 캐시도 확인하고 이것도 저것도 보시고 싶으시면 redis-cli도 함께 구동해서 통신을 할 것이기에 아래처럼 진행 합니다.

$ docker network create redis-net

** docker network를 구성해 줍니다.


$ docker run --name dingrr -p 6379:6379 --network redis-net -d redis redis-server --appendonly yes

** 컨테이너를 실행합니다. dingrr 이름으로 6379포트를 redis-net이라는 브리지를 사용합니다 라는 뜻.


$ docker run -it --network redis-net --rm redis redis-cli -h dingrr

** redis-cli 로 실행한 dingrr Redis 서버에 접속할 수 있습니다.

  • --rm은 기존 컨테이너가 존재하면 삭제하고 다시 실행합니다.


저는 캐시는 1번 인덱스에 큐는 인덱스 없이 데이터베이스에  넣습니다.

아래와 같이 접근 가능합니다.

$ select 1      # 1번 데이터 베이스 선택
$ select 0 # 0번 데이터 베이스 선택
$ keys * # 모든 키 보여줘!
$ keys *index* # index가 포함된 키 보여줘!
$ del abce # abcd 키 지워줘!

 

'Redis를 이용한 캐싱하기' 글 보기

위 글에서 Django에서 Redis의 데이터를 조작할 수 있는 방법을 설명해 두었습니다. 

Django 에서 Redis를 조작하기 위해서는 'django-redis' 라이브러리를 설치하셔야 합니다.

$ pip install django-redis
p>

  • [[a.original_name]] ([[a.file_size | fileSizer]])
'Django에서 Redis 사용하기' 시리즈 포스트
[Django] Redis, Celery 조합으로 비동기 작업
2020-03-25
[Redis] 도커(Docker)로 Redis 설치하기
2020-03-23
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'데브옵스' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]