redis 사용시 주의점

dong5854·2022년 4월 21일
0

명령어 사용 관련

Redis는 Single Thread로 동작하기 때문에 주의해야 하는 명령어들이 있다.

따라서 한 사용자가 시간복잡도가 높은 명령어들은 운영시에 사용하지 않는 것이 좋다.

keys * : 시간 복잡도가 O(n) 이기 때문에 운영중에 사용하면 장애의 원인이 될 수 있다.
scan으로 대체가 가능 scan 은 keys * 와 다르게 재귀적으로 key들을 호출하기 때문에 사이사이에 다른 명령어를 처리하는 것이 가능하다.

hgetall
hscan으로 대체

key에 많은 데이터가 들어있을 경우에 del 로 데이터를 지우면 해당 key를 지우는 동안 아무런 동작을 할 수 없다.
unlink 명령어를 사용하면 key를 백그라운드에 삭제가 가능하기 때문에 해당 명령어 사용 권장

메모리 관련

레디스를 fork()하는 작업 시 자식 프로세스를 생성하는데 이 때 메모리를 두배로 사용하는 상황이 생길 수 있기 때문에 MaxMemory는 실제 메모리의 절반으로 넉넉하게 설정해야한다.

메모리 단편화(ƒragmentation)에 대비해 메모리를 넉넉하게 준다.

메모리 단편화(fragmentation)이 심하게 발생 시 아래 명령어를 사용하는 것을 권장

CONFIG SET activedefrag yes

참고 자료
https://www.youtube.com/watch?v=92NizoBL4uA
https://www.youtube.com/watch?v=Gimv7hroM8A

profile
https://github.com/dong5854?tab=repositories

0개의 댓글