[performance] Redis와 비교하여 memcached는 공룡입니까? [닫은]

나는 지난 몇 주 동안 memcached와 꽤 일했고 Redis에 대해 알게되었습니다. 나는 그들의 readme 의이 부분을 읽을 때 갑자기 내 뱃속에 따뜻하고 아늑한 느낌이 들었습니다.

Redis는 memcached만큼 빠르지 만 더 많은 기능을 가지고 있기 때문에 스테로이드에서 memcached로 사용될 수 있습니다. memcached와 마찬가지로 Redis는 키 시간 제한 설정을 지원하므로 지정된 시간이 지나면이 키가 자동으로 제거됩니다.

놀랍습니다. 나는 또한 벤치 마크와 함께이 페이지를 발견했다 : http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

솔직히 memcache는 Redis라는 새로운 이민자와 비교할 때 성능 관점에서 나쁜 선택 인 오래된 공룡입니까?

이전에 Redis에 대해 많이 들어 본 적이 없으므로 내 질문에 대한 접근 방식입니다!



답변

Memcache는 여전히 뛰어난 도구이며 매우 신뢰할 수 있습니다.

<100ms 범위에서 더 빠른 사람을 얻는 관점에서이 문제를 보는 대신 소프트웨어의 “클래스”당 성능을 확인하십시오.

  • 로컬 램만 사용합니까? -> 가장 빠름
  • 원격 램을 사용합니까? -> 빨리
  • ram plus hardddisk-> oh hurm을 사용합니까?
  • 하드 디스크 만 사용합니까-> 실행!

답변

필요한 것에 따라 다르지만 일반적으로 다음과 같이 생각합니다.

  • 퍼포먼스에 대해 너무 신경 쓰지 않아야합니다. Redis는 작은 값으로 코어 당 속도가 빠르지 만 memcached는 클라이언트의 도움없이 단일 실행 파일 및 TCP 포트로 여러 코어를 사용할 수 있습니다. 또한 memcached는 100k 정도의 큰 값으로 더 빠릅니다. Redis는 최근 큰 값 (불안정한 분기)에 대해 많이 개선되었지만이 사용 사례에서는 여전히 memcached가 더 빠릅니다. 여기서 요점은 : 하나 또는 다른 하나는 그들이 제공 할 수있는 초당 쿼리에 대한 병목 현상이되지 않을 것입니다.
  • 메모리 사용에주의해야합니다. 간단한 키-값 쌍의 경우 memcached는 메모리 효율성이 높습니다. Redis 해시를 사용하는 경우 Redis가 메모리 효율성이 높습니다. 사용 사례에 따라 다릅니다.
  • Redis에서만 제공되는 두 가지 기능인 지속성 및 복제에주의해야합니다. 목표는 캐시를 구축하는 것이더라도 업그레이드 또는 재부팅 후에도 데이터가 여전히 존재하는 데 도움이됩니다.
  • 필요한 작업 종류에주의해야합니다. Redis에는 캐싱 유스 케이스를 고려하더라도 복잡한 작업이 많이 있지만 클라이언트 측에서 데이터를 처리하지 않아도 단일 작업으로 더 많은 작업을 수행 할 수 있습니다 (많은 I / O가 필요한 경우도 있음). 이 작업은 종종 일반 GET 및 SET만큼 빠릅니다. 따라서 GET / SET 만 필요로하지 않고 Redis가 많은 도움을 줄 수있는 더 복잡한 일 (타임 라인 캐싱을 고려)이 필요한 경우.

유스 케이스가 없으면 지금 당장 선택하기가 어렵지만, Redis가 DB로 사용하고 싶지 않을 때에도 더 많은 문제를 해결할 수 있기 때문에 Redis가 의미가 있다고 생각합니다. 캐싱뿐만 아니라 메시징, 순위 등도 있습니다.

물론 Redis 프로젝트의 수석 개발자이기 때문에 편견이있을 수 있습니다.


답변

솔직히 memcache는 Redis라는 새로운 이민자와 비교할 때 성능 관점에서 나쁜 선택 인 오래된 공룡입니까?

  • 기능 세트를 비교하면 Redis더 많은 기능을 사용할 수 있습니다.
  • 설치 용이성을 비교 Redis하는 것도 훨씬 쉽습니다. 종속성이 필요하지 않습니다.
  • 적극적인 개발을 비교하는 Redis것도 좋습니다.
  • 나는 memcached보다 약간 빠르다고 생각 Redis합니다. 디스크를 전혀 건드리지 않습니다.
  • 내 의견은 Redis그보다 더 나은 제품 memcached입니다.

답변

Redis가 수행하지 않는 memcached는 캐시에서 가장 최근에 사용한 값을 제거하는 것입니다. memcached를 사용하면 원하는만큼 값을 안전하게 설정할 수 있으며 메모리 오버플로가 발생하면 최근에 사용하지 않은 값이 삭제됩니다. Redis를 사용하면 모든 것에 대한 시간 제한을 설정하여 대략적인 값만 얻을 수 있습니다. 메모리를 확보해야 할 경우 임의의 3 개의 키를보고 만료에 가장 가까운 키를 삭제합니다.

캐시로만 사용하는 것이 주요 차이점입니다.


답변

Membase를보고 싶을 수도 있습니다.

http://www.northscale.com/products/membase_server.html

나는 그것을 사용하지 않았지만 지속성이있는 메모리 중심의 KV 저장소라는 점에서 Redis와 비슷합니다. 내가 볼 수있는 것과의 주요 차이점은 다음과 같습니다.

  • Redis는 훨씬 더 많은 데이터 조작 기능을 제공합니다 (순서 설정 등).
  • Redis는 수평 확장 성을 추가하기 위해 보류중인 Redis Cluster 프로젝트를 보유하고 있습니다.
  • Redis는 LRU와 객체 크기를 모두 고려하는 하이브리드 알고리즘을 기반으로 단일 계층의 데이터 오프로드 디스크 (VM)를 보유하고 있습니다.

  • Membase는 memcached 와이어 프로토콜을 사용합니다. 기존 응용 프로그램의 업그레이드 경로로 유용합니다.

  • Membase는 분산 해시 테이블 방식을 사용하여 수평으로 확장되도록 설정되었습니다.
  • Membase는 LRU 접근 방식을 사용하여 여러 계층의 데이터 오프로드를 지원할 수 있습니다 (매우 사용되는 디스크는 거의없고 SSD에는 거의 사용되지 않으며 RAM에 자주있는 데이터는 거의 없음)
  • Membase의 TTL 기능에 대해 확실하지 않습니다.

선택은 애플리케이션이 Redis의 추가 데이터 조작 기능을 활용할 수있는 정도에 따라 달라질 수 있습니다.


답변

Hazelcast는 기본적으로 memcached 프로토콜을 지원합니다

https://web.archive.org/web/20140601010929/http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html

따라서 memcached의 현대적인 대안입니다. 어떤 솔루션이 가장 적합한 지 확인해야합니다.


답변