-
[Redis] Keys * vs Scan공부 이야기/REDIS 2024. 6. 5. 12:52
1. Single Thread Event Loop 기반인 Redis는 한 번에 하나의 명령어만 처리할 수 있다.
2. KEYS * 명령어가 실행되는 동안, Redis는 다른 클라이언트 요청을 처리할 수 없으며, 이는 서버 전체의 응답성을 저하시킬 수 있다.
3. 한편, Scan은 cursor 기반으로 iterating을 수행하는데 한 번에 전체 키 공간을 스캔하지 않고, 작은 부분씩 순차적으로 스캔한다.
4. 각 호출에서 SCAN은 현재 커서를 반환하며, 다음 호출에서 이 커서를 사용하여 스캔을 이어간다.
5. Scan은 명령어가 실행되는 중간에 다른 클라이언트 요청을 처리할 수 있기 때문에 Non-Blocking Operation이다.
6. 따라서 Key에 대해 전체 조회 혹은 대량 조회를 할 경우엔 keys * 방식보다 Scan 방식을 할 필요가 있다.
'공부 이야기 > REDIS' 카테고리의 다른 글
[Redis] 복수 개의 명령어를 한 번에 처리하는 Command - MULTI, EXEC, DISCARD, WATCH (0) 2024.06.09 [Redis] 데이터 타입 - Stream (0) 2024.06.06 [redis] redis는 데이터 타입을 어떻게 처리하나 (redisObject, SDS) (2) 2024.06.04 [redis] 데이터 타입 - HLL (0) 2024.06.04 [redis] 데이터 타입 - Strings (1) 2024.06.04