2023-01-09 15:26:04

Memcached는 Redis와 함께 캐시(cache) DB로 많이 사용됩니다. 캐시가 필요한 이유는 일반적으로 DB에서 데이터를 조회하는 것은 느리기 때문입니다. 물론 트래픽이 많지 않은 상황에서는 충분히 감당할 수 있지만, 트래픽이 많은 상황이라면 항상 DB에서 데이터를 조회하는 것은 문제가 될 수 있습니다. 대신 데이터를 빠르게 조회할 수 있는 Redis, Memcached와 같은 캐시 DB를 활용하면 훨씬 더 빠르게 데이터를 조회할 수 있습니다. 

 

보통 자주 조회되거나 최근에 조회된 데이터를 캐시 DB에 저장하여 그 데이터에 대한 조회는 캐시 DB를 활용하게 만듭니다. 캐시 DB에 없다면 이제 MySQL, MongoDB와 같은 일반 DB에서 데이터를 조회하게 하는 것이죠. 

 

이미지 출처: [1]

 

오늘은 docker-compose로 Memcached 컨테이너를 생성하고 실행하는 방법에 대해 살펴보겠습니다. 

 

1. Memcached 도커 이미지 가져오기

우선 memcached 도커 이미지를 도커허브에서 가져옵니다. 

docker pull memcached

 

2. docker-compose.yml 작성

docker-compose.yml 파일을 작성합니다. .yaml로 하셔도 관계 없습니다. 

version: "3.1"

services:  
  memcached_container:
    image: memcached:latest
    container_name: memcached_test
    ports:
      - 11211:11211
    volumes:
      - ./memcached/data:/data
    restart: always

 

Memcached의 경우 메모리에만 데이터를 저장하기 때문에 컨테이너를 내리면 데이터가 유실됩니다. 만약 캐시 데이터의 유실을 원치 않으시면 Redis를 사용하시면 됩니다. 

 

3. docker-compsoe로 컨테이너 생성 및 실행

docker-compose.yml 파일이 존재하는 디렉토리에서 다음 명령을 실행합니다. 

docker-compose up -d

 

docker-compose up 명령은 docker-compose.yml에 정의되어 있는 모든 서비스 컨테이너를 한 번에 생성하고 실행하는 역할을 수행합니다. -d 옵션을 붙여준 이유는 백그라운드에서 실행되게 하기 위함입니다.

 

memcached 컨테이너가 잘 생성되어서 실행되고 있는지 docker ps -a 명령으로 확인합니다. 

 

관련 글

- [docker] docker-compose로 Redis 컨테이너 실행하기

 

참고자료

[1] https://realpython.com/python-memcache-efficient-caching/ 

[2] https://brownbears.tistory.com/43