Redis LAZYFREE Parameter

<< TCP-KEEPALIVE RENAME-COMMAND >>

Redis LAZYFREE parameter

레디스 설정 파일인 redis.conf 에 있는 LAZYFREE 파라미터에 대한 설명입니다.   LAZYFREE 파라미터는 4개가 있고, 레디스 서버 4.0에 추가되었습니다. Yes로 설정하면 LAZYFREE 쓰레드가 백그라운드로 동작하여 키를 삭제하기 때문에 레디스 서버는 키 삭제가 완료될 때 까지 기다리지 않고 다음 동작(operation)을 실행하기 때문에 응답 속도가 빨라집니다.   아래 4개 파라미터를 하나씩 살펴봅니다.

lazyfree-lazy-eviction

Maxmemory가 설정되어 있고 maxmemory-policy가 noeviction이 아닌 상태에서, 메모리를 maxmemory까지 모두 사용 중 일 때, 키가 새로 입력되면 새 키를 저장하기 위해 기존 키를 삭제하게 된다. lazyfree-lazy-eviction이 no 이면 기존 키를 DEL 명령으로 삭제한 후에 새 키가 저장된다. Yes 이면 기존 키를 UNLINK 명령으로 삭제하고 새 키를 저장한다. UNLINK 명령은 LAZYFREE 쓰레드가 처리하기 때문에 레디스 서버가 아주 짧은 시간 동안만 블로킹(blocking)되기 때문에 좀 더 빠르게 처리될 수 있다. 하지만 어짜피 메모리가 확보된 후에 저장된다는 것을 고려해야 한다. 기본값은 no이다.
Latency Monitor에서 eviction-cycle time이 길게 나오고 이것으로 문제가 발생한다면 yes로 설정하고 테스트해보기 바랍니다.

lazyfree-lazy-expire

Yes 이면 EXPIRE 명령 등으로 생존기간이 만료된 키를 제거하는데 UNLINK 명령이 사용된다. No 이면 DEL 명령이 사용된다. 기본값은 no이다.
Latency Monitor에서 expire-cycle time 또는 eviction-del time이 길게 나오고 이것으로 문제가 발생한다면 yes로 설정하고 테스트해보기 바랍니다.

lazyfree-lazy-server-del

기존에 키가 있는데 SET 명령으로 다른 값을 넣을 때, RENAME 명령으로 키를 바꿀 때, SUNIONSTORE 명령에서 destination key와 source key를 같은 key로 지정했을 경우 source key를 삭제할 때 등, lazyfree-lazy-server-del를 yes로 설정하면 UNLINK 명령이 실행된다. 기본값은 no이다.

slave-lazy-flush

클론 서버가 마스터로 부터 전체 데이터를 받을 때 기존에 가지고 있던 데이터를 전부 삭제하는데, slave-lazy-flush가 yes이면 FLUSHALL async 명령으로 삭제한다. 따라서 기존 보다 좀더 빨리 동기화를 할 수 있다. 하지만 기존 데이터 삭제가 완료되지 않은 상태에서 새 데이터를 받기 때문에 메모리가 더 필요할 수 있다는 것을 고려해야 한다. 기본값은 no이다.

사용 방법

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no




<< TCP-KEEPALIVE RENAME-COMMAND >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.