MySQL 데이터는 테이블에 저장되어 있습니다. 데이터를 검색할 때는 먼저 테이블을 전체적으로 스캔하거나 인덱스를 기준으로 검색해야 합니다. 디스크 검색은 포인트별로 검색하는 것이 더 빠를 수 있지만 순차적 검색입니다. Redis는 메모리에 저장되며 메모리의 데이터 위치에 따라 직접 검색될 필요가 없습니다. (추천 학습: Redis 동영상 튜토리얼)
Redis는 메모리 저장소를 기반으로 하고, MySQL은 디스크 저장소를 기반으로 합니다.
Redis는 데이터를 k-v 형식으로 저장합니다. 시간 복잡도는 상수 순서인 O(1)인 반면, MySQL 엔진의 기본 구현은 B+Tree이고 시간 복잡도는 로그 순서인 O(logn)입니다. Redis는 MySQL보다 약간 빠릅니다.
Redis는 단일 스레드 다중화 IO입니다. 단일 스레드는 스레드 전환의 오버헤드를 방지하는 반면, 다중화 IO는 IO 대기의 오버헤드를 방지하여 프로세서 파티셔닝의 효율성을 향상시킬 수 있습니다. , 각 프로세서는 서로 다른 데이터를 처리합니다.
우선, 우리는 mysql이 디스크에 저장되는 영구 저장소라는 것을 알고 있습니다. 검색에는 일정량의 IO가 포함됩니다. 이 병목 현상을 해결하기 위해 가장 일반적으로 나타나는 캐시가 있습니다. memcached(mc라고 함)를 사용했습니다.
먼저 사용자가 mc에 접속하고, 놓치면 mysql에 접속합니다. 그러면 메모리나 하드디스크처럼 데이터가 mc 부분에 복사됩니다.
Redis와 mc는 모두 캐시이며, 둘 다 메모리에서 실행되므로 데이터량이 많은 웹 액세스의 액세스 속도가 크게 향상됩니다. 그러나 mc는 간단한 데이터 구조만 제공합니다.
예를 들어, Redis는 문자열, 목록, 집합, 해시 집합, 정렬된 집합 등과 같은 많은 수의 데이터 구조를 제공하므로 결국 사용자에게 훨씬 더 편리해집니다. 동일한 효과를 얻으면서 실용적인 기능을 수행하려면 물론 redis를 사용하고 천천히 mc를 포기하십시오.
메모리와 하드 디스크의 관계 하드 디스크는 주요 데이터를 영구 저장하는 반면, 메모리는 현재 실행 중인 데이터의 일부이므로 실행 속도가 크게 향상됩니다. 물론 이는 지역화된 액세스 원칙을 기반으로 합니다.
redis+mysql은 메모리 + 디스크 관계의 매핑입니다. Mysql은 디스크에 배치되고 redis는 메모리에 배치됩니다. 이 경우 웹 애플리케이션은 데이터가 없을 때마다 redis에 액세스합니다. 발견되면 Mysql에 액세스합니다.
단, redis+mysql과 메모리+디스크의 사용법은 가장 다릅니다.
Redis 관련 기술 기사를 더 보려면 Redis 데이터베이스 사용 튜토리얼 소개 칼럼을 방문하여 알아보세요!
위 내용은 Redis가 mysql보다 빠른 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!