티스토리 뷰

study

Memcached vs Redis

soo__ 2022. 4. 22. 11:34
  Memcached Redis
출생 2003년 2009년
지향점 새로운 기능 보다 안정성과 최적화에 중점 다양한 기능 제공. 더 강력하지만 좀 더 복잡함
유사점 - in-memory 위에서 동작하는 key-value 스토리지로 둘다 noSQL에 속하는 데이터 관리 솔루션
- key-value 데이터 모델을 기반으로 동작
- 모든 데이터는 메모리 안에 있으며 캐시 관점에서 매우 유용
- 정렬에서 성능에 극적으로 영향을 끼침(select문에서 가장 많은 비용을 차지하는 order를 메모리로 접근하기 때문에 매우 빠름)

차이점 -  키의 이름 250바이트로 제한
- 캐시 값의 용량은 1메가바이트로 제한
- 오로지 문자열만(string) 캐시 가능
- 멀티 스레드
- 최소 알고리즘(LRU)를 사용하여 새 데이터와 크기가 비슷한 데이터를 임의로 제거
- lazy Eviction만 제공

- 캐싱한 콘텐츠를 미세하게 튜닝하거나 캐시의 지속성(유사시 데이터 백업의 의미) 및 전반적인 효율성 등을 조절 가능
- 키명과 값의 용량을 각각 512메가바이트까지 크게 사용 가능하며 그것들을 안전한 바이너리로 관리
- 5가지의 데이터 구조 형식을 취급(다양한 가능성 제시)
- 해시를 이용해 오브젝트 필드와 값을 유니크하게 관리 가능

- global cache 방식 채택


- 싱글 스레드
- 데이터 축출 (Data eviction)(새 데이터를 위해 오래된 데이터를 축출하는) 메커니즘 사용 > 6가지의 정책 중 하나를 선택


- 서버가 저장하는 데이터가 불투명하지 않아 서버가이를 직접 조작할 수 있음
- 관리하는 데이터를 복제할 수 있음(장애 대비)
- 사용량 및 비정상적인 동작을 모니터링하고 추적할 수 있는 수많은 매트릭스와 내성 명령을 제공
언제 사용? - 작고 변하지 않는 데이터 (ex:HTML코드)를 캐싱할 때 내부 메모리가 복잡하지 않기 때문에 비교적 작은 메모리를 사용
- 멀티 스레드로 더 많은 계산 리소스를 제공하여 쉬운 수평적 확장 (redis도 3.0이후 이 기능 포함)
- 옆의 두 가지 사항을 제외한 모든 상황
- 대부분 싱글 스레드로서 데이터 손실없이 클러스터링(설정 및 운영이 비교적 복잡)을 통해 수평 확장이 가능
참고 https://brownbears.tistory.com/43
http://blog.leekyoungil.com/?p=200
https://ojava.tistory.com/70

 

'study' 카테고리의 다른 글

map() 과 flatMap()  (0) 2022.05.17
ConcurrentHashMap  (0) 2022.05.03
JVM과 GC  (0) 2022.04.28
Builder 패턴  (0) 2022.04.27
Stateless vs Stateful  (0) 2022.04.22
공지사항
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31