인프런 커뮤니티 질문&답변
강의를 듣던 중 궁금한 점 있어요
해결된 질문
작성
·
52
1
수업 챕터
14. 세션 로그인 ▶︎ 구현과 동작
에서 6분 35초쯤에
Docker 에서 Redis Container 로 진입하시고
/data # redis-cli
명령을 작성하실 때,
원래는 이런 명령어를 사용하시면 안된다고 하시는데
그럼 원래는 무슨 명령어를 사용하는지 궁금하네요
답변 1
1
한조각
지식공유자
안녕하세요 SPRING 님!
redis-cli 에서 사용한 keys * 명령어를 사용하시면 안된다고 말씀드린 부분입니다. (다시 들어보니 말하는 타이밍이 조금 오해가 있을 수 있을 것 같습니다! 영상 이해에 방해가 되었다면 죄송합니다.)
추가로 설명드리면,keys * 는 모든 키를 전부 스캔해서 결과를 한 번에 반환하는 명령입니다.
위 명령어를 사용하시게 되면 redis 는 대부분 명령을 단일 스레드로 처리하기 때문에 키가 수천만개 이상 아주 많은 경우, 다른 모든 요청이 대기하는 상태가 되게 됩니다.
트래픽이 많은 경우 타임아웃, 커넥션 끊어짐, 장애 전파 등으로 이어질 수 있습니다.
또한 반환되는 키가 많으면 네트워크 패킷 크기도 커서 받는 서버입장도 부하가 커지겠죠.
그래서 keys 대신 scan 을 많이 이용하기도 합니다. 스캔은 한 번에 조금씩만 조회하고 바로 제어권을 반환하는 방식으로 구성되어있어서, redis 가 다른 요청도 계속 처리할 수 있는 장점이 있습니다.
질문 주셔서 감사합니다.




