강하고 투박해보이는 첫 인상
# 설치부터 사용까지 EASY 그 자체
❯ brew install redis
❯ brew services start redis
❯ redis-cli ping
PONG
❯ redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
레디스 짱과 함께라면 아무것도 무섭지 않은 어느 날…
SET 은 성공했는데 GET이 되지 않았다.
레디스짱…우리 사이 좋았잖아 갑자기 왜 이래?
어느 날, 팀장님이 캐싱을 사용할 서비스 아키텍처를 그려오라고 했다.
단순 키-값 저장소로 간결한 사용성과 빠른 속도를 자랑하는 맴캐시디, 다양한 자료구조 지원과 캐싱 외에 여러 기능도 제공하는 레디스.
둘 중 무엇을 고르면 좋을까?
| | 컨셉 | 데이터모델 | 영구성 | 데이터 최대 사이즈 | 분산 지원 | 트랜잭션 | 클라이언트 지원 | 명령어/스크립트 | 멀티스레드 유무 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 레디스 | 캐싱 저장소로만 보면 섭해
****cache,
vector database,
document database,
streaming engine,
message broker | 다양한 데이터 구조 지원 | 스냅샷(RDB), AOF | 512MB | 클러스터 모드 지원 | MULTI
, EXEC
, DISCARD
, WATCH
명령어를 사용하여 원자적으로 커맨드 관리 | jeddis,
lettuce,
redission | redis-cli,
LUA 스크립트 | 싱글스레드
코어를 올려도 큰 성능효과 기대 x
경합을 피해 성능 저하를 피하기 위해 싱글스레드 채택 | | 맴캐시드 | ONLY CACHE 오직 캐시 캐시 밖에 몰라
고성능, 분산 메모리 객체 캐싱 시스템 , 데이터베이스 부하를 완화하여 동적 웹 애플리케이션 속도를 높이는 데 사용하기 위한 것 (단순하고 명확한 목표) | 단순 키-값 저장소(string) | 지원 X | 1MB | 맴캐시드에서 지원하지는 않으나, 클라이언트에서 해싱으로 분산시킬 수 있음 | 지원, 빠르게 캐시 키값을 사용하는 컨셉으로 트랜잭션 같은 복잡한 기능은 지원하지 않음
경합이 된다면? *CAS 알고리즘
으로 해결 | SpyMemcached,
****XMemcached | Telnet
복잡한 기능을 지원하지 않는 컨셉으로 따로 명령어나 스크립트를 제공하지 않음 | 멀티스레드
코어를 올리면 성능이 올라감
빠르게 캐싱 처리를 하고자 멀티스레드 방식 채택 |
이왕이면 다홍치마고 레디스는 다홍색이다.