Redis와 Memcached의 장점, 단점, 차이점 소개

풀어 주다: 2020-05-05 09:15:04
앞으로
3033명이 탐색했습니다.

Redis와 Memcached의 장점, 단점, 차이점 소개

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

(1) 데이터가 메모리에 저장되므로 속도가 빠릅니다. HashMap의 장점은 검색 및 연산의 시간 복잡도가 O(1)

(2) 풍부한 데이터를 지원한다는 것입니다. 문자열 및 목록을 포함한 유형. 세트, 정렬 세트, 해시

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

(4 ) 풍부한 기능: 캐싱에 사용할 수 있습니다. 메시지의 경우 만료 시간을 키로 설정하면 만료 후 자동으로 삭제됩니다.

2. memcached에 비해 redis의 장점은 무엇인가요?

(1) memcached의 모든 값은 간단한 문자열입니다. 이를 대체하기 위해 redis는 더 풍부한 데이터 유형을 지원합니다.

(2) redis는 memcached보다 훨씬 빠릅니다.

(3) redis는 데이터를 유지할 수 있습니다

3. 일반적인 Redis 성능 문제 및 해결 방법:

(1) 마스터는 RDB 메모리 스냅샷 및 AOF 로그 파일과 같은 지속성 작업을 수행하지 않는 것이 가장 좋습니다.

(2) 데이터가 중요한 경우 슬레이브 AOF 백업 데이터 활성화 및 초당 한 번씩 동기화하도록 정책을 설정하세요

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

(4) 피하십시오 큰 압박을 받고 있습니다. 마스터 라이브러리에 슬레이브 라이브러리를 추가하세요

(5) 마스터-슬레이브 복제에 그래프 구조를 사용하지 마십시오. 즉, 마스터 <- Slave1

이러한 구조는 단일 실패 지점 문제를 해결하고 마스터를 슬레이브로 대체하는 데 편리합니다. 마스터가 전화를 끊으면 즉시 Slave1을 마스터로 활성화하고 다른 모든 것은 변경하지 않을 수 있습니다.

4. MySQL에는 2천만 개의 데이터가 있지만 Redis에는 20만 개의 데이터만 저장됩니다. Redis의 데이터가 핫 데이터인지 확인하는 방법

관련 지식: Redis 메모리 데이터 세트의 크기가 특정 수준으로 증가하는 경우 크기, 데이터 제거 전략이 구현됩니다. Redis는 6가지 데이터 제거 전략을 제공합니다.

voltile-lru: 만료 시간이 설정된 데이터 세트(server.db[i].expires)에서 가장 최근에 사용된 데이터를 선택하여 제거

휘발성-ttl: 데이터 세트에서 제거 만료 시간이 설정된 데이터 세트 제거할 시간 데이터 세트(server.db[i].expires)에서 만료될 데이터를 선택합니다.

휘발성-random: 데이터 세트(server.db)에서 제거할 데이터를 선택합니다. 만료 시간이 설정된 [i].expires)

allkeys-lru: 제거할 데이터 세트(server.db[i].dict)에서 가장 최근에 사용된 데이터를 선택합니다.

allkeys-random: 데이터에서 임의의 데이터를 선택합니다. set (server.db[i].dict) Eliminate

no-enviction(eviction): 데이터 제거가 금지됩니다

5. Memcache와 Redis의 차이점은 무엇인가요?

1) 저장 방법

Memecache는 모든 데이터를 메모리에 저장합니다. 정전 후에는 데이터가 메모리 크기를 초과할 수 없습니다.

Redis는 데이터 지속성을 보장하기 위해 부분적으로 하드 디스크에 저장됩니다.

2), 데이터 지원 유형

Memcache의 데이터 유형 지원은 비교적 간단합니다.

Redis에는 복잡한 데이터 유형이 있습니다.

3) 사용되는 기본 모델이 다릅니다.

클라이언트와의 통신을 위한 기본 구현 방법과 애플리케이션 프로토콜이 다릅니다.

Redis는 VM 메커니즘을 자체적으로 직접 구축합니다. 일반 시스템이 시스템 기능을 호출하면 이동 및 요청에 일정 시간이 낭비되기 때문입니다.

4), 값 크기

redis는 최대 1GB에 도달할 수 있지만 memcache는 1MB에 불과합니다

6. Redis의 일반적인 성능 문제는 무엇입니까? 어떻게 해결하나요?

1) 마스터는 메모리 스냅샷을 작성하고 save 명령은 메인 스레드의 작업을 차단하는 rdbSave 함수를 예약합니다. 스냅샷이 상대적으로 크면 성능에 미치는 영향이 매우 크기 때문에 서비스가 일시 중지됩니다. 간헐적으로 발생하므로 Master에 대한 메모리 스냅샷을 작성하지 않는 것이 가장 좋습니다.

2) 마스터 AOF 지속성. AOF 파일을 다시 작성하지 않으면 이 지속성 방법은 성능에 가장 작은 영향을 미치지만 AOF 파일이 너무 크면 복구에 영향을 미칩니다. 마스터 재시작 속도.

마스터는 메모리 스냅샷 및 AOF 로그 파일을 포함한 어떠한 지속성 작업도 수행하지 않는 것이 가장 좋습니다. 특히 데이터가 중요한 경우 슬레이브는 AOF 백업 데이터를 활성화해야 하며 전략은 한 번 동기화하는 것입니다. 초당.

3).Master는 AOF 파일을 다시 작성하기 위해 BGREWRITEAOF를 호출합니다. AOF는 다시 작성하는 동안 많은 양의 CPU 및 메모리 리소스를 차지하므로 과도한 서비스 로드가 발생하고 단기 서비스가 중단됩니다.

4) Redis 마스터-슬레이브 복제의 성능 문제 마스터-슬레이브 복제 속도와 연결 안정성을 위해서는 슬레이브와 마스터가 동일한 LAN에 있는 것이 가장 적합합니다. for redis

Redis는 모든 사용자에게 가장 적합합니다. 메모리 내 데이터 시나리오에서 Redis는 지속성 기능도 제공하지만 실제로는 전통적인 의미의 지속성과는 상당히 다른 디스크 기반 기능에 가깝습니다. Redis가 Memcached의 향상된 버전에 더 가까운 것 같으니 언제 Memcached를 사용해야 하고 언제 Redis를 사용해야 할까요?

Redis와 Memcached의 차이점을 간단히 비교해 보면 대부분의 사람들은 다음과 같은 견해를 갖게 될 것입니다.

1. Redis는 단순한 k/v 유형의 데이터를 지원할 뿐만 아니라 list, set, zset, hash 등과 같은 데이터 구조의 저장도 제공합니다.

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

3. Redis는 데이터를 디스크의 메모리에 보관하고 다시 시작할 때 다시 로드할 수 있는 데이터 지속성을 지원합니다.

(1), 세션 캐시

Redis 사용에 가장 일반적으로 사용되는 시나리오 중 하나는 세션 캐시입니다. Redis를 사용하여 다른 스토리지(예: Memcached)보다 세션을 캐시할 때의 이점은 Redis가 지속성을 제공한다는 것입니다. 엄격하게 일관성을 요구하지 않는 캐시를 유지할 때 대부분의 사람들은 사용자의 장바구니 정보가 모두 손실되면 불만을 품게 됩니다. 그래도 여전히 그럴까요?

다행히 Redis가 수년에 걸쳐 개선됨에 따라 Redis를 적절하게 사용하여 세션 문서를 캐시하는 방법을 쉽게 알아낼 수 있습니다. 잘 알려진 상용 플랫폼인 Magento도 Redis 플러그인을 제공합니다.

(2), 전체 페이지 캐시(FPC)

Redis는 기본 세션 토큰 외에도 매우 간단한 FPC 플랫폼도 제공합니다. 일관성 문제로 돌아가서, Redis 인스턴스가 다시 시작되더라도 사용자는 디스크 지속성으로 인해 페이지 로딩 속도가 떨어지는 것을 볼 수 없습니다. 이는 PHP 로컬 FPC와 유사하게 크게 개선되었습니다.

Magento를 다시 예로 들면, Magento는 Redis를 전체 페이지 캐시 백엔드로 사용할 수 있는 플러그인을 제공합니다.

또한 WordPress 사용자를 위해 Pantheon에는 검색한 페이지를 최대한 빨리 로드하는 데 도움이 되는 매우 유용한 플러그인 wp-redis가 있습니다.

(3), Queue

메모리 저장 엔진 분야에서 Redis의 가장 큰 장점 중 하나는 Redis를 좋은 메시지 대기열 플랫폼으로 사용할 수 있도록 하는 목록 및 집합 작업을 제공한다는 것입니다. Redis가 대기열로 사용하는 작업은 로컬 프로그래밍 언어(예: Python)에서 목록의 푸시/팝 작업과 유사합니다.

Google에서 "Redis 대기열"을 빠르게 검색하면 수많은 오픈 소스 프로젝트를 즉시 찾을 수 있습니다. 이러한 프로젝트의 목적은 Redis를 사용하여 다양한 대기열 요구 사항을 충족하는 매우 좋은 백엔드 도구를 만드는 것입니다. 예를 들어 Celery에는 Redis를 브로커로 사용하는 백엔드가 있습니다. 여기에서 볼 수 있습니다.

(4), Leaderboard/Counter

Redis는 메모리에서 숫자를 늘리거나 줄이는 작업을 매우 잘 구현합니다. 세트와 정렬 세트도 이러한 작업을 수행하는 것을 매우 간단하게 해줍니다. Redis는 이 두 가지 데이터 구조를 제공합니다.

그래서 우리는 정렬된 세트에서 상위 10명의 사용자를 얻을 것입니다. 이를 "user_scores"라고 부르며 다음과 같이 하면 됩니다:

물론 이것은 사용자를 기반으로 한다고 가정합니다. 점수는 오름차순으로 정렬됩니다. 사용자와 사용자의 점수를 반환하려면 다음과 같이 실행해야 합니다.

ZRANGE user_scores 0 10 WITHSCORES
로그인 후 복사

Agora Games는 Ruby로 구현된 좋은 예이며 리더보드는 Redis를 사용하여 데이터를 저장합니다. 여기서 볼 수 있습니다.

(5), 게시/구독

마지막(그러나 가장 중요한 것은) Redis의 게시/구독 기능입니다. 게시/구독에는 실제로 많은 사용 사례가 있습니다. 사람들이 이를 소셜 네트워크 연결에서 게시/구독 기반 스크립트의 트리거로 사용하고 심지어 Redis의 게시/구독 기능을 사용하여 채팅 시스템을 구축하는 것을 보았습니다! (아니요, 사실입니다. 확인해 보세요.)

Redis가 제공하는 모든 기능 중에서 사용자에게 다양한 기능을 제공하지만 가장 마음에 들지 않는 기능이라고 생각합니다.

더 많은 Redis 지식을 알고 싶다면 redis 입문 튜토리얼 칼럼을 주목해 주세요.

위 내용은 Redis와 Memcached의 장점, 단점, 차이점 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿