>데이터 베이스 >Redis >Redis Note 녹음 개요

Redis Note 녹음 개요

Golang菜鸟
Golang菜鸟앞으로
2023-08-08 16:24:051304검색

redis 소개

Redis는 데이터베이스, 캐시 및 메시지 대기열 브로커로 사용할 수 있는 오픈 소스(BSD 라이선스) 인메모리 데이터 구조 서버입니다. string, 해시 테이블, list, set, 을 지원합니다. 주문한 컬렉션 , 비트맵 , hyperloglogs 및 기타 데이터 유형. 내장된 복제, Lua 스크립트, LRU 제거, 트랜잭션 및 다양한 수준의 디스크 지속성 기능을 제공하는 동시에 Redis Sentinel을 통해 고가용성을 제공하고 Redis를 통해 자동 partitioning을 제공합니다. 무리 .有Redis는 얼마나 빠른가요

Redis는 메모리 기반 데이터를 사용합니다.

작성 시 제공되는 공식 데이터는 100,000+ QPS(초당 쿼리 수)에 도달할 수 있습니다.

Redis Note 녹음 개요

가로축은 연결수, 세로축은 QPS입니다.

공식 데이터를 살펴본 결과 정말 빠르다는 것을 알았습니다. 꿈을 가진 프로그래머로서 왜 그렇게 빠른지 알아야 합니다. 그렇죠?

그런 다음 웹 페이지에서 일부 정보를 확인했는데 일반적인 상황은 다음과 같습니다.

  • 이는 완전히 메모리를 기반으로 하며 대부분의 요청은 매우 빠른 순수 메모리 작업입니다. HashMap과 마찬가지로 데이터가 메모리에 저장되는 장점은 검색 및 연산의 시간 복잡도가 O(1)이라는 것입니다.

  • 데이터 구조가 간단하고 데이터 연산도 간단합니다. Redis의 데이터 구조는 특수하게 설계되었습니다.

  • 단일 스레드를 사용하여 불필요한 컨텍스트 전환 및 경쟁 조건을 방지합니다. CPU를 소비하는 여러 프로세스나 스레드로 인한 전환이 없습니다. 잠금 문제가 있으며 교착 상태로 인한 성능 소모가 없습니다.

  • 다중 채널 I/O 다중화 모델, 비차단 IO를 사용합니다. 기본 구현 방법과 클라이언트와의 통신을 위한 애플리케이션 프로토콜이 다릅니다. Redis는 자체 VM 메커니즘을 직접 구축합니다. 왜냐하면 일반 시스템이 시스템 기능을 호출하면 이동하는 데 일정 시간이 낭비되고 request;

  • 다중 채널 I/O 다중화 모델은 select, poll 및 epoll을 사용하여 여러 스트림의 I/O 이벤트를 동시에 모니터링합니다. 하나 이상의 스트림이 있습니다. I/O 이벤트가 있으면 차단 상태에서 깨어나므로 프로그램은 모든 스트림을 폴링하고(epoll은 실제로 이벤트를 생성한 스트림만 폴링합니다) 준비된 스트림만 처리합니다. 이 접근 방식은 불필요한 작업을 많이 방지합니다.

    요약하자면 실제로 세 가지 사항이 있습니다.

    1. epoll 네트워크 모델을 사용하고 단일 스레드를 사용하여 요청을 처리합니다.

    2. 필요에 맞는 다양한 고성능 데이터 구조를 사용하세요.

    3. redis는 메모리 작업을 사용하며 C 언어로 작성되었습니다.

    시작점

    이 시리즈의 기사는 epoll 네트워크 모델을 논의하는 데 중점을 두지 않고 주로 Redis 데이터 구조 학습 원리를 기록합니다. Redis 데이터 처리가 매우 빠른 이유를 알려주세요.

    1. redis 문자열 구현 원리

    2. redis 목록 구현 원리

    3. redis set 구현 원리

    4. re 정렬된 dis 집합의 구현 원리

    5. Redis의 해시 구현 원칙

    6. 다른 데이터 유형 소개

위 내용은 Redis Note 녹음 개요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Golang菜鸟에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제