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