>일반적인 문제 >Redis 쿼리가 빠른 이유는 무엇입니까?

Redis 쿼리가 빠른 이유는 무엇입니까?

(*-*)浩
(*-*)浩원래의
2019-05-24 16:50:039523검색

Redis 쿼리를 빠르게 만드는 방법: 1. Redis 쿼리는 완전히 메모리를 기반으로 합니다. 2. Redis는 단일 스레드를 사용합니다. 4. Redis는 다중 채널 I/O 다중화 모델을 사용합니다. . redis 구축 VM 메커니즘.

Redis 쿼리가 빠른 이유는 무엇입니까?

프로그래머라는 직업을 하다보면 캐시를 설정할 때, 동시성을 제어할 때, 아직도 늘 하던 압축 스토리지를 할 때 생각이 납니다. 내가 아는 출발점은 알지만, 심도 있는 탐구와 요약이 없는 것이 인기 있는 이유다. 최근에는 시간과 장소, 사람이 좋아서 세세하게 정리를 하게 됐다.

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

2. Redis의 구조는 특별히 설계되었습니다.

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

4. 다중 채널 I/O 다중화 모델, 비차단 IO 사용

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

위 사항은 비교적 쉽습니다. 아래에서 다중 채널 I/O 다중화 모델에 대해 간략히 설명하겠습니다.

(1) 다중 채널 I/O 다중화 모델

다중 채널 I/O 다중화 모델은 선택을 사용합니다. , 폴링 및 epoll을 사용하여 동시에 여러 채널을 모니터링합니다. 스트림의 I/O 이벤트 기능은 유휴 상태일 때 현재 스레드를 차단합니다. 차단된 상태이며 프로그램은 모든 스트림을 다시 폴링하고(epoll은 실제로 이벤트를 발생시키는 스트림만 폴링함) 준비된 스트림만 순서대로 처리합니다.

여기서 "다중"은 여러 네트워크 연결을 의미하고 "재사용"은 동일한 스레드를 재사용하는 것을 의미합니다. 다중 채널 I/O 다중화 기술을 사용하면 단일 스레드가 여러 연결 요청을 효율적으로 처리할 수 있으며(네트워크 IO의 시간 소모 최소화) Redis는 메모리에서 데이터를 매우 빠르게 처리하므로 메모리에서의 작업이 수행되지 않습니다. Redis의 성능에 영향을 미치는 병목 현상이 발생합니다. 위의 사항은 주로 Redis의 높은 처리량에 기여합니다.

위 내용은 Redis 쿼리가 빠른 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.