Redis 사용시 주의할 점

김민우·2025년 2월 21일
0

잡동사니

목록 보기
28/28

지금까지 Redis를 사용하면서 정작 주의할 점에 대해선 잘 알지 못했다. 이를 정리해보려 한다.

O(n) 명령어 사용 지양


Redis는 싱글 스레드기 때문에 한 번에 하나씩 명령에 처리할 수 있다. 따라서 데이터 양이 많은 경우 O(n) 명령어를 호출하면, 꽤 오랜 시간 동안 Redis가 다음 요청을 처리할 수 없게 된다. 그러므로 운영 환경에서는 특히나 오래 걸리는 명령어를 사용하지 말아야 한다.

대표적인 O(n) 명령어

  • keys : 패턴에 맞는 모든 key들을 조회할 수 있다. 데이터 양이 많아질수록 느려지므로, 운영 환경에서는 scan 명령어를 사용하자.
  • flushall : 전체 데이터베이스에 있는 모든 키들을 지우는 명령어
  • flushdb : 선택된 데이터베이스에 있는 모든 키들을 지우는 명령어

참고로 Memcached의 flush_all 명령어는 Redis보다 훨씬 빠르다. 그 이유는 동작 방식에서 차이가 있기 때문이다. Redis는 데이터를 하나하나 지우는 방식으로 동작하기 때문에 시간 복잡도가 O(n)이다. 하지만, Memcached는 모든 데이터를 지우지 않는 대신, 해당 명령어가 실행된 시간만 기록한다. 그리고 get 명령어가 호출된 시점에 유효성을 체크하고 결과를 반환하는 방식이다.

메모리 사용


Redis는 모든 데이터를 메모리에 저장하므로 Redis를 사용할 때 메모리 사용량을 주의해야 한다. Redis가 사용하는 메모리 양이 너무 많아지면 서버가 다운될 수 있다. 메모리 사용량을 줄이는 방법 중 하나는 Redis의 maxmemory 옵션을 사용하는 것이다. 이 옵션을 사용하면 Redis가 사용하는 메모리 양을 제한할 수 있다.

Redis에서 maxmemory 옵션을 설정하려면 Redis 구성 파일(redis.conf)을 수정해야 합니다. 구성 파일에서 maxmemory 옵션을 추가하고 원하는 메모리 크기를 설정한다. 예를 들어, Redis 서버가 1GB의 메모리를 사용하도록 설정하려면 다음과 같이 설정하면 된다.

maxmemory 1gb

설정 파일을 수정한 후 Redis 서버를 다시 시작하면 적용이 된다.

0개의 댓글