[Redis] LazyFree Parameter

LazyFree

LazyFree는 redis.conf에서 설정할 수 있으며 yes로 설정하게 될 경우 LAZYFREE thread가 background로 동작하여 키를 제거하기 때문에 응답속도가 빨라진다

lazyfree-lazy-eviction

Maxmemory가 설정되있으면서 모두 사용중이고 policy가 noeviction이 아닌 상태일 때 lazyfree-laze-eviction이 no라면 DEL로 키가 삭제된다. 이 작업은 서버 프로세스에 의해 수행되면서 블록킹이 발생하게 된다. yes로 설정하게 된다면 DEL이 아닌 UNLINK명령이 실행되고 LAZYFREE thread에 의해 백그라운드로 수행하게 됨으로써 블록킹을 회피할 수 있다.

lazyfree-lazy-expire

EXPIRE 된 키를 제거하는데 DEL이 아닌 UNLINK로 명령을 수행한다.

lazyfree-lazy-server-del

다음과 같은 상황에서 DEL이 아닌 UNLINK로 명령을 수행한다.

  1. 키가 존재하면서 SET으로 다른 값을 넣을 때
  2. RENAME으로 키를 바꿀 때
  3. SUNIONSTORE 명령에서 destination key와 source key를 같은 key로 지정했을 때

lazyfree-lazy-user-del

yes로 설정할 경우 DEL 명령이 내부적으로 UNLINK로 동작하게 된다. UNLINK는 비동기로 동작한다.

slave-lazy-flush

clone 서버가 master로부터 전체 데이터를 받을 때 기존의 데이터를 전부 삭제하게 되는데 slave-lazy-flush가 yes라면 FLUSHALL async로 데이터를 삭제하게 된다. 따라서 기존보다 더 빨리 동기화를 마칠 수 있지만 기존 데이터의 삭제가 완료되지 않은 상태에서 새 데이터를 받기 때문에 메모리가 더 필요해질 수 있다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/19/Redis/lazyfree/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.