Memcached 와 Redis 란?
Memcahced와 Redis는 Key-value 형태의 인-메모리 기반의 캐싱 시스템으로, 캐시 레이어로서 DB의 부하를 줄여주며, 주로 웹 어플리케이션의 응답 속도 개선을 위해 사용된다.
두가지 모두 사용하기 어렵지 않지만, Memcached는 Cache 서비스를 위해 설계된 반면, Redis는 좀더 다양한 용도에 효과적으로 사용 할 수 있도록 설계되었다는 차이가 있다.
Memcached 특징
- 웹 서버에서 기존에 할당된 캐시 메모리를 초과시, 전체 할당된 메모리에서 유동적으로 사용 가능
- Data Evicion 전략 : LRU (Least Recently Used) 알고리즘만 사용
- Data Structure : String 형태만 지원
- Persistance : Memcached는 Cache로 들고 있는 데이터를 저장할 수 없음
- Thread : Multi-Thread 형태
- Scalability : 멀티 스레드 기반의 멀티 프로세스 코어 사용 가능하여 Scale-up 의 방향의 확장 가능
- Replication : 데이터 복제 불가능
- Transaction : 트랜잭션 지원 X
Memcahced를 사용 전 후 에 따른 메모리 운영 방식 차이다.
Redis 특징
- Data Evicion 전략 : LRU (Least Recently Used)외에도 voliatile-LRU(LRU + 만료시점이 지정된 것 우선), allkeys-random (무작위 제거), Volatile TTL (TTL 값 기반 만료시점이 빠른 것) 등의 보다 세세한 Policy 제공
- Data Structure : String, Hash, Sorted Set, List, Set과 같은 다양한 자료 구조 지원
- Persistance : Redis는 Cache로 들고 있는 데이터를 특정 시점에 저장 할 수 있음 (=Snapshots)
- Thread : Single-Thread 형태로 1번에 1개의 명령어만 수행
- Scalability : 데이터 파티셔닝이 가능해 Scale-out 으로 확장하여 데이터 효과적으로 처리 가능
- Replication : 데이터 복제 가능
- Transaction : 트랜잭션의 원자성, 일관성, 독립성, 지속성의 4원칙을 지킴
Redis는 Cache 이외에도, Pub/Sub Message 시스템을 통해 Chatting이나, Streaming 등의 서비스에 사용 될 수 있다.
참고 문헌
https://chrisjune-13837.medium.com/redis-vs-memcached-10e796ddd717 // [Cache] Redis vs. Memcached
https://luran.me/359 // Memcached vs Redis 특징
https://brownbears.tistory.com/43 // Memcached, Redis
https://docs.djangoproject.com/en/4.1/topics/cache/ // Django Memcached & Redis Caching
'DB > 이론' 카테고리의 다른 글
[DB] Postgresql 과 MySQL schema 구분 차이 (0) | 2024.12.21 |
---|---|
[MQ] 메시지 지향 미들웨어 (by. RabbitMQ, Redis) (0) | 2022.11.26 |
[DB] Clustering, Sharding, Replication 차이 (0) | 2022.10.03 |
[DB] Replication 이란? (Feat. Mysql, Mongo) (0) | 2022.10.03 |
[DB] Index란? (0) | 2022.08.11 |