Redis 설정
Redis 설정 (Redis Configuration)
Redis는 설정 파일 없이도 내장된 기본 설정으로 시작할 수 있어요. 다만 그렇게 하면 테스트·개발 목적으로만 권장되죠. 제대로 된 방식은 보통 redis.conf라고 부르는 Redis 설정 파일을 제공하는 거예요.
Redis Open Source의 8.0 ~ 8.8.x 릴리스에서는 설정 파일이 두 개예요:
redis.conf— Redis 서버에 대한 설정만 담고 있어요.redis-full.conf— Redis 서버와 사용 가능한 모든 컴포넌트(Redis Search, Redis time series, Redis 확률적 데이터 구조)의 설정을 담고 있어요. 이 파일의 첫 줄은include redis.conf로, 시작 시 Redis 서버 설정을 끌어오죠. 모든 컴포넌트를 활성화하고 싶다면redis-full.conf를 쓰세요. 컴포넌트마다 하나씩 총 네 개의loadmodule지시어가 들어 있고, Redis JSON도 로드해요(JSON에는 설정 파라미터가 없지만요).
Redis 8.10 이상부터는 redis.conf 하나만 사용해요.
소스에서 빌드해 컴포넌트 없이 서버만 만들기로 했다면 redis.conf를 설정 파일로 쓰면 돼요.
각 설정 파일은 아주 단순한 형식의 지시어(directive)들로 구성돼요:
keyword argument1 argument2 ... argumentN
설정 지시어의 예는 이렇습니다:
replicaof 127.0.0.1 6380
공백이 포함된 문자열을 인자로 넘길 때는 (이중 또는 단일) 따옴표를 쓰면 돼요:
requirepass "hello world"
단일 따옴표 문자열에는 백슬래시로 이스케이프한 문자를, 이중 따옴표 문자열에는 추가로 백슬래시 16진수 표기("\xff")로 인코딩한 ASCII 기호를 포함할 수 있어요.
설정 지시어의 목록과 각각의 의미·용도에 대한 설명은 Redis 배포판에 포함된 자기 문서화(sample) 파일 redis.conf와(8.0~8.8.x는) redis-full.conf에서 확인할 수 있어요. 버전별 원본은 다음과 같아요:
- Redis 8.10: redis.conf
- Redis 8.8: redis-full.conf, redis.conf
- Redis 8.6: redis-full.conf, redis.conf
- Redis 8.4: redis-full.conf, redis.conf
- Redis 8.2: redis-full.conf, redis.conf
- Redis 8.0: redis-full.conf, redis.conf
- Redis 7.4: redis.conf
- Redis 7.2: redis.conf
- Redis 7.0: redis.conf
- Redis 6.2: redis.conf
출처: 공식문서
명령줄로 인자 넘기기
Redis 설정 파라미터를 명령줄에서 직접 넘길 수도 있어요. 테스트 목적으로 특히 유용하죠. 다음은 포트 6380에서 127.0.0.1:6379 인스턴스의 replica로 새 Redis 인스턴스를 시작하는 예시예요:
./redis-server --port 6380 --replicaof 127.0.0.1 6379
명령줄로 넘기는 인자의 형식은 redis.conf에서 쓰는 것과 완전히 같아요. 단, 키워드 앞에 --가 붙는다는 점만 다르죠. 내부적으로는 (사용자가 넘긴 설정 파일이 있다면 그것까지 합쳐) 인자를 redis.conf 형식으로 변환한 인메모리 임시 설정 파일을 생성해요.
서버 실행 중에 설정 바꾸기
서비스를 멈추고 재시작하지 않아도, 혹은 프로그램으로 현재 설정을 조회해도 Redis를 런타임에 재구성할 수 있어요. 이를 위한 특수 명령이 CONFIG SET과 CONFIG GET이에요.
모든 설정 지시어가 이 방식을 지원하는 건 아니지만, 대부분은 예상대로 동작해요. 자세한 내용은 각 명령 페이지를 참고하세요.
주의할 점은, 런타임에 설정을 바꿔도 redis.conf·redis-full.conf 파일에는 반영되지 않아서 다음에 Redis를 재시작하면 예전 설정이 적용돼요. CONFIG SET으로 설정한 내용을 설정 파일에도 반드시 반영하세요. 직접 수정하거나, CONFIG REWRITE를 쓰면 현재 설정값과 일치하지 않는 필드를 자동으로 갱신해줘요. 기본값으로 설정된 필드는 추가되지 않고, 설정 파일 안의 주석은 보존돼요.
Redis를 캐시로 구성하기
Redis를 모든 키에 만료 시간이 있는 캐시로 쓸 계획이라면, 다음 설정을 고려해 볼 수 있어요(예시로 최대 메모리 2MB):
maxmemory 2mb
maxmemory-policy allkeys-lru
이 구성에서는 애플리케이션이 EXPIRE 명령(또는 그에 상응하는 것)으로 키의 TTL을 설정할 필요가 없어요. 2MB 메모리 한도에 도달하면 근사 LRU 알고리즘으로 모든 키가 내보내지기 때문이죠.
기본적으로 이 구성의 Redis는 memcached와 비슷하게 동작해요. Redis를 LRU 캐시로 사용하는 방법에 대한 더 자세한 문서는 여기에서 볼 수 있어요.