기술나눔

Redis 운영 및 유지 관리 인터뷰 질문

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

인터뷰 과정에 있는 모든 사람을 돕기 위해 Redis에 대해 아직 확신이 없는 학생들을 위해 인터뷰 중에 당황하지 않고 제안을 받기 위해 노력할 수 있도록 일반적인 Redis 인터뷰 질문 40개를 정리했습니다!

1. Redis란 무엇입니까?

Redis는 완전한 오픈 소스이며 무료이며 BSD 프로토콜을 준수하며 고성능 키-값 데이터베이스입니다.

Redis는 다른 키-값 캐싱 제품과 비교하여 다음과 같은 세 가지 특징을 가지고 있습니다.

  • Redis는 데이터 지속성을 지원합니다. 메모리의 데이터를 디스크에 저장하고 다시 시작할 때 사용할 수 있도록 다시 로드할 수 있습니다.

  • Redis는 단순한 키-값 유형 데이터를 지원할 뿐만 아니라 list, set, zset, hash와 같은 데이터 구조의 저장도 제공합니다.

  • Redis는 데이터 백업, 즉 마스터-슬레이브 모드의 데이터 백업을 지원합니다.

Redis의 장점:

  • 매우 높은 성능: Redis는 110,000회/초의 속도로 읽고 81,000회/초의 속도로 쓸 수 있습니다.

  • 풍부한 데이터 유형: Redis는 바이너리 사례에서 문자열, 목록, 해시, 세트 및 순서가 지정된 세트 데이터 유형 작업을 지원합니다.

  • 원자성: Redis의 모든 작업은 원자성입니다. 즉, 성공적으로 실행되거나 전혀 실행되지 않습니다. 개별 작업은 원자적입니다. 다중 작업은 MULTI 및 EXEC 명령어로 래핑된 트랜잭션, 즉 원자성도 지원합니다.

  • 풍부한 기능: Redis는 게시/구독, 알림, 키 만료 및 기타 기능도 지원합니다.

Redis는 다른 키-값 저장소와 어떻게 다릅니까?

Redis는 더 복잡한 데이터 구조를 가지며 이에 대한 원자적 작업을 제공합니다. 이는 다른 데이터베이스와는 다른 진화 경로입니다. Redis의 데이터 유형은 기본 데이터 구조를 기반으로 하며 추가 추상화가 필요 없이 프로그래머에게 투명합니다.

Redis는 메모리에서 실행되지만 디스크에 유지될 수 있습니다. 따라서 다양한 데이터 세트를 고속으로 읽고 쓸 때 메모리 상충관계가 있습니다. 데이터 양이 하드웨어 메모리보다 클 수 없기 때문입니다. 인메모리 데이터베이스의 또 다른 장점은 디스크의 동일한 복잡한 데이터 구조와 비교할 때 메모리에서의 작동이 매우 간단하므로 Redis는 강력한 내부 복잡성을 가지고 많은 작업을 수행할 수 있다는 것입니다. 또한 디스크 형식 측면에서 임의 액세스가 필요하지 않기 때문에 압축되고 추가 생성됩니다.

2. Redis의 데이터 유형은 무엇입니까?

Redis는 문자열(string), 해시(hash), 목록(list), 집합(set) 및 zsetsorted set(ordered set)의 다섯 가지 데이터 유형을 지원합니다.

실제 프로젝트에서 더 일반적으로 사용되는 것은 문자열과 해시입니다. 중급 및 고급 Redis 사용자라면 다음과 같은 데이터 구조 HyperLogLog, Geo 및 Pub/Sub도 추가해야 합니다.

BloomFilter, RedisSearch, Redis-ML 등 Redis 모듈도 사용해봤다고 하면 면접관의 눈빛이 빛나기 시작할 것입니다.

3. Redis를 사용하면 어떤 이점이 있나요?

  • HashMap과 마찬가지로 데이터가 메모리에 저장되므로 속도가 빠릅니다. HashMap의 장점은 검색 및 연산의 시간 복잡도가 O1)입니다.

  • 문자열, 목록, 집합, Zset, 해시 등을 포함한 풍부한 데이터 유형을 지원합니다.

  • 트랜잭션을 지원하며 작업은 모두 원자성입니다. 소위 원자성은 데이터에 대한 모든 변경 사항이 실행되거나 전혀 실행되지 않음을 의미합니다.

  • 풍부한 기능, 캐싱, 메시징, 키별 만료 시간 설정에 사용할 수 있으며 만료 후 자동으로 삭제됩니다.

4. Memcached에 비해 Redis의 장점은 무엇입니까?

  • Memcached의 모든 값은 간단한 문자열이며 이를 대체하는 Redis는 더 풍부한 데이터 클래스를 지원합니다.

  • Redis는 Memcached보다 훨씬 빠릅니다.

  • Redis는 데이터를 유지할 수 있습니다.

5. Memcache와 Redis의 차이점은 무엇입니까?

  • 저장 방법 Memecache는 모든 데이터를 메모리에 저장합니다. 정전 후에는 데이터가 메모리 크기를 초과할 수 없습니다. Redis는 데이터 내구성을 보장하기 위해 하드 디스크에 부분적으로 저장됩니다.

  • 데이터 지원 유형 Memcache의 데이터 유형 지원은 비교적 간단합니다. Redis에는 복잡한 데이터 유형이 있습니다.

  • 사용되는 기본 모델은 클라이언트와의 통신을 위한 기본 구현 방법 및 애플리케이션 프로토콜이 다릅니다. Redis는 자체 VM 메커니즘을 직접 구축합니다. 일반 시스템이 시스템 기능을 호출하면 이동 및 요청에 일정 시간이 낭비되기 때문입니다.

6. Redis는 단일 프로세스이고 단일 스레드입니까?

Redis는 단일 프로세스이자 단일 스레드입니다. Redis는 큐 기술을 사용하여 동시 액세스를 직렬 액세스로 전환하여 기존 데이터베이스 직렬 제어의 오버헤드를 제거합니다.

7. 스트링형 스마트 수납공간의 최대 용량은 얼마나 되나요?

512M。

8. Redis의 지속성 메커니즘은 무엇입니까? 각각의 장점과 단점은 무엇입니까?

Redis는 RDB 및 AOF 메커니즘이라는 두 가지 지속성 메커니즘을 제공합니다.

RDB(Redis DataBase) 지속성 방법: 데이터 세트 스냅샷을 사용하여 반영구적 모드로 Redis 데이터베이스의 모든 키-값 쌍을 기록하고, 지속성 이후 특정 시점에 해당 데이터를 임시 파일에 쓰는 것을 말합니다. 완료되면 이를 사용하십시오. 임시 파일은 마지막으로 유지된 파일을 대체하여 데이터 복구를 수행합니다.

이점:

  • 지속성에 편리한 dump.rdb 파일이 하나만 있습니다.

  • 재해에 강하고 안전한 디스크에 파일을 저장할 수 있습니다.

  • 성능을 최대화하려면 하위 프로세스를 분기하여 쓰기 작업을 완료하고 기본 프로세스가 계속해서 명령을 처리하도록 허용하여 IO가 최대화되도록 합니다. 지속성을 위해 별도의 하위 프로세스를 사용하면 기본 프로세스는 IO 작업을 수행하지 않으므로 Redis의 고성능이 보장됩니다.

  • 데이터 세트가 크면 시작 효율이 AOF보다 높습니다.

단점: 낮은 데이터 보안. RDB는 일정 간격으로 유지됩니다. 지속성 중에 Redis가 실패하면 데이터 손실이 발생합니다.따라서 이 방법은 데이터 요구 사항이 엄격하지 않은 경우에 더 적합합니다.

AOF(Append-only file) 지속성 방법: 모든 명령줄 레코드가 완전히 영구적으로 저장되고 Redis 명령 요청 프로토콜 형식의 aof 파일로 저장됨을 의미합니다.

이점:

  • 데이터 보안을 위해 AOF 지속성은appendfsync 속성을 사용하여 구성할 수 있습니다. 항상 있는 경우 각 명령 작업은 AOF 파일에 기록됩니다.

  • Append 모드로 파일을 작성하면 중간에 서버가 다운되더라도 redis-check-aof 도구를 통해 데이터 일관성 문제를 해결할 수 있습니다.

  • AOF 메커니즘의 다시 쓰기 모드입니다. AOF 파일을 다시 작성하기 전에(파일이 너무 크면 명령이 병합되고 다시 작성됨) 일부 명령(예: 실수로 조작된 플러시올)을 삭제할 수 있습니다.

결점:

  • AOF 파일은 RDB 파일보다 크고 복원 속도가 느립니다.

  • 데이터 세트가 크면 시작 효율성이 RDB보다 낮습니다.

9. Redis의 일반적인 성능 문제 및 해결 방법

  • 마스터는 메모리 스냅샷을 작성하지 않는 것이 가장 좋습니다. 마스터가 메모리 스냅샷을 작성하는 경우 save 명령은 메인 스레드의 작업을 차단하는 rdbSave 기능을 예약하므로 스냅샷이 상대적으로 크면 성능에 미치는 영향이 매우 커집니다. 서비스가 간헐적으로 중단됩니다.

  • 중요한 데이터인 경우 슬레이브는 AOF 백업 데이터를 활성화하고, 초당 1개의 데이터를 동기화하도록 정책을 설정합니다.

  • 마스터-슬레이브 복제 속도와 연결 안정성을 위해서는 마스터와 슬레이브가 동일한 LAN에 있는 것이 가장 좋습니다.

  • 스트레스를 받는 마스터 데이터베이스에 슬레이브를 추가하지 마십시오.

  • 마스터-슬레이브 복제에는 그래프 구조를 사용하지 마십시오. 단방향 연결 목록 구조, 즉 마스터를 사용하는 것이 더 안정적입니다.