-
Redis vs Memcached📖 개발 공부 2023. 8. 18. 00:52
현재 다니고 있는 회사 프로젝트에서 redis와 memcached 모두 사용하고 있다.
둘의 차이점을 대략 알고 있었지만(멀티스레드, 싱글스레드 차이 / 다양한 데이터타입 제공 여부 정도?), 한번 명확히 짚고 가고 싶어서 AWS 공식 문서 그대로 정리를 해보았다.
Redis vs. Memcached | AWS
Redis and Memcached are popular, open-source, in-memory data stores. Although they are both easy to use and offer high performance, there are important differences to consider when choosing an engine. Memcached is designed for simplicity while Redis offer
aws.amazon.com
Sub-millisecond latency → Memcached (O) / Redis (O)
Redis와 Memcached는 모두 밀리초 미만의 응답 시간을 지원한다. 데이터를 메모리에 저장함으로써 디스크 기반 데이터베이스보다 더 빠르게 데이터를 읽을 수 있다.
Developer ease of use → Memcached (O) / Redis (O)
Redis와 Memcached는 모두 구문적으로 사용하기 쉽고 애플리케이션에 통합하는 데 최소한의 코드가 필요하다.
Data partitioning → Memcached (O) / Redis (O)
Redis와 Memcached 모두 데이터를 여러 노드에 분산할 수 있다. 이를 통해 트래픽이 증가할 때 더 많은 데이터를 더 잘 처리하도록 확장할 수 있다.
Support for a broad set of programming languages → Memcached (O) / Redis (O)
Redis와 Memcached 모두 개발자가 사용할 수 있는 많은 오픈 소스 클라이언트가 존재한다.
지원되는 언어로는 Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, Go 등이 있다.
Advanced data structures → Memcached (X) / Redis (O)
문자열 외에도 Redis는 목록, 세트, 정렬된 세트, 해시, 비트 배열 및 하이퍼로그 로그를 지원한다. 애플리케이션은 이러한 데이터 구조들을 다양하게 활용할 수 있다.
[Redis] Redis의 Data Type 공부 (Strings, Lists, Sets, Hashes, Sorted Sets, Bitmaps, HyperLogLog)
목차 1. Strings 타입 2. Lists 타입 3. Sets 타입 4. Hashes 타입 5. Sorted Sets 타입 6. Bitmaps 타입 7. HyperLogLog 타입 Strings 타입 가장 기본적인 데이터 타입이다. 바이트 배열로 저장된다. (binary-safe: 모든 문자
ayoung0073.tistory.com
예를 들어 Redis Sorted Sets를 사용하여 순위별로 정렬된 플레이어 목록을 유지하는 게임 리더보드를 쉽게 구현할 수 있다.
Multithreaded architecture → Memcached (O) / Redis (X)
Memcached는 다중 스레드이므로 멀티 코어를 사용할 수 있다. 즉, 컴퓨팅 용량을 확장하여 더 많은 작업을 처리할 수 있다.
Redis는 싱글 스레드 기반의 인메모리 데이터베이스이며, 한 번에 하나의 명령어만 처리할 수 있다.
KEYS 명령어와 같이 모든 키를 검색하는 명령어는 성능 문제를 초래할 수 있다. 특히 데이터가 많은 경우에는 성능 저하가 심해질 수 있다.
마찬가지로 RDB (Snapshot) 백업 작업은 Redis의 싱글 스레드 동작 특성으로 인해 큰 데이터셋의 경우 시간이 오래 걸릴 수 있다. 이러한 이유로 Redis의 백업 기능을 사용할 때에는 클러스터의 상태와 성능 영향을 고려해야 한다.
Snapshots → Memcached (X) / Redis (O)
Redis를 사용하면 보관 또는 복구에 사용할 수 있는 특정 시점 스냅샷으로 데이터를 디스크에 보관할 수 있다.
Replication → Memcached (X) / Redis (O)
Redis를 사용하면 Redis 기본 복제본을 여러 개 만들 수 있다. 이를 통해 데이터베이스 읽기를 확장하고 고가용성 을 제공한다.
Transactions → Memcached (X) / Redis (O)
Redis는 명령 그룹을 격리된 원자성 작업으로 실행할 수 있는 트랜잭션을 지원한다.
Pub/Sub → Memcached (X) / Redis (O)
Redis는 고성능 채팅방, 실시간 댓글 스트림, 소셜 미디어 피드, 서버 상호 통신에 사용할 수 있는 패턴 일치로 Pub/Sub 메시징을 지원한다.
Lua scripting → Memcached (X) / Redis (O)
Redis를 사용하면 트랜잭션 Lua 스크립트를 실행할 수 있다. 스크립트는 성능을 높이고 응용 프로그램을 단순화하는 데 도움이 될 수 있다.
Geospatial support → Memcached (X) / Redis (O)
Redis에는 대규모 실시간 지리정보 데이터 작업을 위해 특별히 제작된 명령어가 있다.
두 요소(예: 사람 또는 장소) 사이의 거리 찾기 및 점의 지정된 거리 내에 있는 모든 요소 찾기와 같은 작업을 수행할 수 있다.
확실히 맴캐시드보다 레디스가 제공하는 기능이 훨씬 많은 것을 알 수 있다.
글만 봐도 어느정도 이해를 할 수 있지만, 직접 코드로 작성하면 더 명확히 이해하고 내것으로 만들 수 있을 것 같다.
요 특징 중 몇몇가지는 직접 실습해서 링킹해두려고 한다. 파파이팅
반응형'📖 개발 공부' 카테고리의 다른 글
[Cloud Design Patterns] Asynchronous Request-Reply pattern 비동기 요청/응답 패턴 (feat. HTTP 폴링, 웹소켓) (0) 2023.08.29 What's Wrong with Layers? (계층형 아키텍처의 문제점) (0) 2023.08.23 Cache / Caching 전략 / Cache Expiration, Eviction (0) 2023.08.14 [HTTP] HTTP 메서드 (0) 2023.08.09 RPC, gRPC, stub (0) 2023.08.03