LabHub

Redis 와 캐싱 · 자료구조별 쓰임 · 퀴즈

퀴즈: 자료구조 선택

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 사용자 프로필을 String 에 JSON 으로 넣는 대신 Hash 로 저장하면 얻는 것은?

    1. 필드 단위 원자적 갱신 — 동시 수정이 서로를 덮어쓰지 않음
    2. 직렬화 형식이 바뀌어 더 좋아지는 압축률
    3. 키에 만료 시간을 걸 수 있는 기능
    4. 필드 값을 기준으로 한 자동 정렬
  2. 운영 중인 Redis 에서 `KEYS *` 가 위험한 이유는?

    1. 키 전체를 훑는 동안 단일 스레드가 막혀 모든 요청이 멈추기 때문
    2. 결과 목록을 한 번에 만드느라 메모리를 많이 써서
    3. 키 목록 전송으로 네트워크 부하가 커져서
    4. 만료된 키가 섞여 결과가 부정확해서
  3. 순위 조회가 필요한 랭킹에 적합한 자료구조는?

    1. List — 삽입 순서를 지키는 목록
    2. ZSet — 점수순으로 정렬된 집합
    3. Hash — 필드와 값의 맵
    4. Set — 중복 없는 집합
  4. 중복 없는 원소 집합에서 교집합을 구해야 할 때 올바른 접근은?

    1. 두 목록을 애플리케이션으로 가져와 반복문으로 비교
    2. List 를 정렬해 병합
    3. Set 자료구조의 SINTER 명령
    4. Hash 필드를 순회
  5. 거대한 키를 삭제할 때 `DEL` 대신 `UNLINK` 를 쓰는 이유는?

    1. UNLINK 가 삭제 실패 시 롤백해 더 안전해서
    2. DEL 은 메모리 회수를 동기로 하지만 UNLINK 는 백그라운드로 미뤄서
    3. UNLINK 만 복제본까지 확실히 전파돼서
    4. UNLINK 는 키를 지워도 TTL 설정이 남아서
  6. `SADD` 의 반환값이 멱등성 구현에 쓰이는 이유는?

    1. 호출할 때마다 현재 집합 크기를 알려 줘서
    2. 멤버의 남은 TTL 을 함께 알려 줘서
    3. 멤버가 정렬돼 있어 중복을 찾기 쉬워서
    4. 새로 추가된 개수를 돌려줘 처음 보는 것인지 원자적으로 판정돼서