Redis 지식 포인트를 요약한 기사

MySQL을 기반으로 Redis가 다시 등장한 이유는 무엇입니까? Redis의 장점은 무엇입니까?

  • MySQL은 디스크 IO를 기반으로 하고 Redis는 메모리를 기반으로 합니다.
    메모리의 읽기 및 쓰기 속도는 디스크 IO의 읽기 및 쓰기 속도보다 훨씬 빠르므로 성능을 크게 향상시킬 수 있습니다.

  • 이점: 메모리 기반으로 고성능, 광범위한 데이터 유형 지원, Python, Java 등 모든 주류 프로그래밍 언어 지원, 데이터 지속성(ROB AOF 메커니즘) 지원, 마스터-슬레이브 복제 지원, 클러스터 모드이며 센티넬 모드를 지원합니다.

  • Redis는 키-값 형식의 비관계형 데이터베이스입니다.

Redis에서 지원하는 기본 명령

  • SET은 키-값 쌍을 추가합니다.
  • GET은 키-값 쌍을 가져옵니다.
  • EXISTS개의 쿼리 키-값 쌍
  • DEL 키-값 쌍 삭제
  • FLUSHALL은 모든 키를 삭제합니다.
  • KEYS * 모든 키 쿼리
  • TTL 보기 키 만료 시간
  • EXPIRE는 키의 만료 시간을 설정합니다.

Redis가 지원하는 데이터 구조

1 문자열

  • Redis는 기본적으로 저장을 위해 문자열을 사용합니다.
  • 모든 문자열 명령은 기본 명령과 일치합니다.

2 목록

  • 기본 데이터 구조는 deque입니다.
  • L로 시작하는 명령
  • 고유 명령: LPUSH(왼쪽에서 큐에 넣기) LPOP(왼쪽에서 큐에서 빼기) LRANGE(왼쪽에서 큐 출력) LLEN(큐 길이) LTRIM(왼쪽에서 큐의 일부 요소 유지) RPUSH(오른쪽에서 큐에 넣기) …

3세트

  • 순서가 지정되지 않은 중복 제거 세트
  • S로 시작하는 명령
  • 고유 명령: SADD(요소 추가) SREM(요소 제거) SISMEMBER(쿼리 요소)
  • 집합연산, 교집합, 합집합 등을 지원합니다.

4개의 정렬된 세트

  • 중복 제거 세트 주문
  • Z로 시작하는 명령
  • Zset의 각 요소는 부동 소수점 유형 점수와 연관되어 있으며 요소는 점수에 따라 작은 것부터 큰 것까지 정렬됩니다.
  • Zset의 요소는 고유하지만 일부 요소는 중복될 수 있습니다.
  • 고유 명령: ZRANGE 키 0 -1 WITHSCORES(모든 멤버 + 점수 출력) ZRANK(가장 작은 멤버부터 가장 큰 멤버까지 순위 보기)

5 해시

  • H로 시작하는 명령
  • Redis 자체는 키-값 쌍이며, 이는 키-값 쌍인 키-값 쌍의 값과 동일합니다.

6 스트림 메시지 큐

  • X로 시작하는 명령
  • 고유 명령: 소비자 그룹 및 소비자 생성) XINFO(소비자 그룹 정보 보기)

7 지리공간 지리공간

  • Redis3.2 버전의 새로운 기능
  • 지리적 위치정보를 저장하기 위해 특별히 사용되는 데이터 구조
  • 명령은 GEO로 시작합니다.
  • 지리적 위치 계산 작업 지원
  • 고유 명령어 : GEOPOS(도시의 경도, 위도 구하기) DEODIST(도시와의 직선 거리 계산) GEOSEARCH(특정 도시를 중심으로 일정 범위 내의 도시 조회)

8 비트맵 비트맵

  • 01의 배열, 아래 첨자는 오프셋을 나타냅니다.
  • 명령은 BIT로 시작됩니다.
  • 비트 연산 지원
  • 적용 가능한 시나리오: 사용자 체크인 상태, 온라인 상태 및 선호 여부를 기록합니다.

9 비트필드 비트필드

  • 명령은 BITFIELD로 시작합니다.
  • 적용 가능한 시나리오: 게임 플레이어 정보 기록

10 하이퍼로그로그

  • 카디널리티 통계를 수행하는 알고리즘, 즉 세트의 고유 요소 수를 계산하는 알고리즘
  • 명령은 PF로 시작합니다.
  • 원리: 무작위 알고리즘
  • 장점: 메모리를 적게 차지함
  • 단점: 오류가 있음
  • 적용 시나리오 : 특정 단어에 대한 검색 횟수를 세는 등 높은 정확성이 요구되지 않지만 많은 양의 데이터가 있는 통계 작업

Redis는 단일 스레드인가요, 아니면 멀티 스레드인가요?

  • Redis는 항상 단일 스레드를 사용하는 경향이 있는데, 이는 잦은 스레드 전환을 방지하는 것이 장점 중 하나입니다.
  • 4.0 이전에는 완전히 단일 스레드였습니다.
  • 4.0 이후에는 메인 스레드가 단일 스레드이고 백그라운드 스레드도 있습니다(더티 데이터 처리, 쓸모 없는 링크 해제, 큰 키 삭제 등).
  • 6.0 이후에는 명령 실행이 단일 스레드이며 다른 스레드(데이터 읽기 및 쓰기 처리, 프로토콜 구문 분석)가 있습니다.

게시-구독 모델

  • 지정된 채널에 메시지를 보내는 게시 명령
  • 구독 명령, 지정된 채널을 구독합니다.
  • 결점: 메시지를 유지할 수 없으며 기록 메시지를 기록할 수 없습니다.

Redis의 트랜잭션과 관계형 데이터베이스의 트랜잭션의 차이점은 무엇입니까?

  • 트랜잭션은 일련의 명령 모음입니다. 트랜잭션이 시작된 후 모든 명령은 대기열에 배치되고 함께 패키지되어 트랜잭션 실행 요청을 시작합니다. 하나의 요청에서 여러 명령을 실행할 수 있습니다.
  • MULTI 명령으로 트랜잭션 시작
  • EXEC 명령 실행 트랜잭션
  • 관계 트랜잭션은원자작업, 모든 명령은 성공하거나 실패합니다.
  • 비관계형 트랜잭션원자가 아니다작동, 명령 실행 실패는 다음 명령 실행을 계속하는 데 방해가 되지 않습니다.

두 가지 지속성 방법인 RDB와 AOF의 차이점은 무엇입니까? 어느 것을 사용하는 것이 더 낫습니까?

RDB 스냅샷(Redis 데이터베이스)

  • 고정된 시간 간격마다 메모리의 데이터 스냅샷이 디스크에 기록됩니다. 즉, ROB는 특정 시점에 데이터의 전체 복사본을 저장합니다.
  • 이점: 복구속도가 빨라 백업에 적합
  • 결점: 서버가 갑자기 다운될 경우 마지막 스냅샷 이후의 데이터는 모두 유실되어 실시간 지속이 불가능합니다.
  • 트리거 방법: 1. 자동 트리거 2. Save 명령, save 명령을 실행하는 동안 redis는 다른 작업을 수행할 수 없습니다. 3. bgsave 명령, 하위 프로세스를 생성하는 동안 redis는 스냅샷을 찍기 위해 특별히 하위 프로세스를 생성합니다. 다른 작업은 할 수 없지만 스냅샷을 찍으세요. 이 기간 동안 다른 작업을 할 수 있습니다.

AOF 로그(추가 전용 파일)

  • 명령을 실행할 때 명령을 메모리와 AOF에 동시에 쓰고 Redis가 다시 시작되면 AOF에 있는 명령을 사용하여 데이터베이스를 재구축합니다. 즉, AOF는 실행된 모든 명령을 저장하는 로그입니다.
  • 이점: 실시간 지속성 달성
  • 결점: 파일이 매우 크고 복구 속도가 느리며 시작 효율성이 낮습니다.

각각 장단점이 있는데 Hybrid Persistence가 가장 좋습니다 즉 ROB + Incremental AOF 형태입니다 AOF 파일은 현재 실행 명령에 마지막 스냅샷만 저장하고 Redis가 재시작되면 ROB 파일이 먼저 로드됩니다 그런 다음 증분 AOF 파일이 재생되어 ROB가 실시간으로 유지되는 것을 방지하고 AOF 파일이 너무 커지는 것을 방지합니다.

마스터-슬레이브 복제

  • 하나의 Redis 마스터 서버에서 다른 Redis 슬레이브 서버로 데이터 복사
  • 낮은 수준의 Redis 클러스터 모드
  • 마스터 노드는 여러 개의 슬레이브 노드를 가질 수 있고, 슬레이브 노드는 하나의 마스터 노드만 가질 수 있습니다.
  • 데이터는 마스터에서 슬레이브로, 마스터 쓰기 및 슬레이브 읽기로만 한 방향으로 복제됩니다.
  • 데이터 동기화 방법은 전체 복사 또는 부분 복사가 될 수 있습니다.
  • 이점: 데이터 핫 백업, 장애 복구, 로드 밸런싱(읽기-쓰기 분리로 서버 로드 공유 가능), 고가용성 초석(센트리 모드 및 클러스터 기반)
  • 결점: 마스터 노드 장애는 수동 개입이 필요하며(센티넬 모드로 해결 가능), 마스터 노드의 쓰기 기능이 제한됩니다(분산 모드로 해결 가능)

센티넬 센티넬 모드

  • 자동 장애 조치, 마스터-슬레이브 복제 프로세스 중에 마스터 노드에 장애가 발생하면 수동 개입이 필요하지 않습니다.
  • Redis 클러스터에서 독립적인 프로세스로 실행되며 서버의 동작을 모니터링하고, 한 노드에서 문제가 발견되면 게시 및 구독 모드를 통해 다른 노드에 알리고, 마스터 노드에 장애가 발생하면 슬레이브 노드가 됩니다. 새로운 마스터 노드로 업그레이드되면 다른 슬레이브에게 통보됩니다.노드가 마스터 노드를 변경했습니다.
  • 주관적 오프라인과 객관적 오프라인 주관적 오프라인은 센티넬 노드가 특정 노드에 문제가 있다고 생각하는 것을 의미하고, 객관적 오프라인은 일정 수 이상의 센티넬 노드가 마스터 노드에 문제가 있다고 생각하는 것을 의미한다.
  • 새로운 마스터 노드를 선택하는 방법? 노드 목록을 가져오고 먼저 비정상 노드를 필터링한 다음 우선 순위가 가장 높은 노드를 선택한 다음 복제 오프셋이 가장 큰 노드(가장 완전한 데이터를 나타냄)를 선택한 다음 runid가 가장 작은 노드(가장 빠른 것을 나타냄)를 선택합니다. 시작)
  • Sentinel 노드는 프로세스이므로 실패할 수 있으므로 일반적으로 3개의 Sentinel을 사용하고 1개가 선출됩니다.리더십 센티넬일하고 리더가 실패한 후 새로운 리더 보초를 선택하십시오.

레디스 클러스터

  • 데이터 파티션/샤딩: 클러스터의 핵심 기능입니다. 클러스터는 데이터를 여러 노드에 분산시키며, 한편으로는 Redis 단일 머신의 메모리 크기 제한을 뛰어넘어 저장 용량을 크게 늘립니다.한편, 각 마스터 노드는 외부 읽기 서비스와 쓰기 서비스를 제공할 수 있습니다. 클러스터의 응답성을 향상시킵니다.
  • 고가용성: 클러스터는 마스터-슬레이브 복제 및 마스터 노드의 자동 장애 조치를 지원합니다.(Sentinel과 유사) 노드 하나에 장애가 발생하더라도 클러스터는 계속해서 외부 세계에 서비스를 제공할 수 있습니다.

클러스터에서 데이터를 분할하는 방법은 무엇입니까?

  • 즉, 키(데이터)를 얻었을 때 클러스터의 어느 노드에 넣어야 할까요?
  • 클러스터 생성 시 데이터 파티셔닝이 수행됩니다.
  • 완전한 고가용성 클러스터를 보장하려면 노드 수가 6개 이상이어야 합니다.

노드는 잔여 파티션을 취합니다.

  • 키 또는 사용자 ID의 나머지 해시 값을 사용하여 데이터가 매핑되는 노드를 결정합니다.
  • 결점: 노드 확장 또는 축소 등 노드 수가 변경되면 모든 데이터 노드 매핑 관계를 다시 계산해야 하며, 이로 인해 데이터가 다시 마이그레이션됩니다.

일관된 해시 파티셔닝

  • 전체 해시 값 공간을 가상 링으로 구성한 후 클러스터 노드의 IP 주소나 호스트 이름을 해시하여 링에 배치합니다. 키를 얻으면 먼저 키에 대해 동일한 해시 값을 수행하여 링의 위치를 ​​결정한 다음 시계 방향으로 링을 "걷습니다". 링의 첫 번째 노드를 만나면 키를 a에 넣습니다.
  • 이점: 노드 추가 및 삭제는 해시 링의 인접한 노드에만 영향을 미치며 다른 노드에는 영향을 미치지 않습니다.
  • 결점: 노드가 링에 고르지 않게 분포되면 일부 캐시 노드에 대한 압력이 더 커집니다. 노드에 장애가 발생하면 이 노드에서 수행된 모든 데이터 액세스가 다음 노드로 이동되어 다음 노드에 압력을 가하게 됩니다.

가상 슬롯 파티션

  • Redis 클러스터는 이 솔루션을 사용합니다.
  • 일관된 해시 파티셔닝을 기반으로슬롯이라고 불리는 가상 노드(슬롯). 슬롯을 이용한 일관된 해시 파티셔닝에서는 노드가 여러 개의 슬롯으로 나누어지며, 슬롯은 데이터 관리 및 마이그레이션의 기본 단위입니다.
  • 슬롯은 데이터와 실제 노드 간의 관계를 분리하므로 노드를 추가하거나 제거해도 시스템에 거의 영향을 미치지 않습니다. 노드가 삭제되면 해당 노드 아래의 여러 슬롯이 나머지 노드에 데이터를 균등하게 분배하여 해당 노드의 모든 데이터가 다음 노드에 누적되는 문제를 방지할 수 있습니다.

클러스터 확장?

  • 확장: 새로운 노드에 특정 개수의 슬롯과 데이터를 할당합니다.
  • 축소: 슬롯과 데이터를 다른 노드에 할당한 다음 삭제할 노드를 오프라인으로 전환합니다.

캐시 데이터와 데이터베이스 데이터의 일관성을 어떻게 보장합니까?

로컬 캐시와 분산 캐시 간의 일관성을 보장하는 방법은 무엇입니까?

단축키와 큰 키를 처리하는 방법은 무엇입니까?

Redis 파이프라인?

추천

출처blog.csdn.net/weixin_46838605/article/details/132542860