잠시 redis.io를 들어가볼까요.
Redis는 오픈소스(BSD License)이며, 데이터베이스로, 캐시로, 메시지 브로커로 사용되는 in-memory 자료구조의 저장소입니다. Redis는 string, hashes, list, set, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, 그리고 streams와 같은 자료구조를 제공합니다. Redis는 내장된 복제(Replication) 기능, Lua 스크립팅, LRU 정책(LRU eviction), 트랜잭션, 그리고 여러 디스크를 사용한 여러 레벨의 영속성을 갖고 있으며, Rdis Sentinel과 Redis Cluster를 사용한 자동 파티셔닝을 통해 높은 가용성을 제공합니다.
한국어로 바꿔도 한국어가 아니네요... 그래도 하나도 중요한게 아니니 그냥 흘려 읽으면 됩니다. 몇가지 문장만 뽑아볼까요?
Redis는 데이터베이스로, 캐시로, 메시지 브로커로 사용되는 in-memory 자료구조의 저장소입니다.
Redis는 여러 자료구조를 제공합니다.
in-memory는 주로 RAM과 같은 공간을 가르키기 위해 사용되는 표현입니다. 정리하면 이렇게 한문장이 되겠네요?
Redis는 여러 자료구조를 제공하는, 데이터 베이스로, 캐시로, 메시지 브로커 로 사용 할 수 있는 메모리안에서 돌아가는 저장소이다!
그래서 Redis의 사용례는 굉장히 많아요.
- 메인 데이터베이스
- Expire 기능이 있어서, 일정 기간 이후로 사라져야 할 토큰을 저장 할 때 같은 용도로 사용 할 수 있어요
- 그 외에도 사용 용도는 많아요
- 캐시 (memcached 처럼 - memcached가 뭔지 몰라도 괜찮아요)
- DB에 있는 정보를 접근 속도가 더 빠른 메모리에 올려서 사용해요
- 먼저 Redis에 물어보고, Redis가 그 정보를 안갖고있으면 DB에 물어보는 식으로요
- 메시지 브로커 (많이 언급했죠?)
- Kafka, RabbitMQ 처럼요
- 채팅 서비스나, 실시간으로 데이터를 뿌려주는것과 같이 pub/sub 구조를 활용 할 수 있는 곳에서 잘 쓸 수 있답니다.
그래서.. Redis는 다재다능한 친구라고 할 수 있어요.
- Kafka, RabbitMQ
- Memcached
이 친구들이 할 수 있는 것들을 할 수 있으니까요.
백엔드 엔지니어로써 Redis를 접할 기회는 꽤 있을것이라 생각합니다. 많은 요청에 대비해 캐시메모리를 두는것은 보편적인 대비책이고, 또 MSA 구조를 구축하거나, 부하분산 처리를 쉽게 구현하거나 하는 등의 상황이 있을것입니다.
아직 상용화 시켜본 서비스가 없기에 Redis의 필요성을 직접적으로 느껴보진 못했지만, 상황을 가정함으로써 이러한 시스템들의 필요성에 대해 공감 해 볼 수 있는 시간을 가졌습니다.
이상 글 마치겠습니다. 어려운 글이었을텐데, 읽어주셔서 감사합니다.
'Computer Science' 카테고리의 다른 글
Docker Stack의 env-file 설정시 주의 사항 (0) | 2021.03.22 |
---|---|
사과를 쓰다 펭귄한테 싸다구 맞은 사연 (맥에서 리눅스로 파일 업로드 시 주의할 점) (0) | 2021.03.04 |
Nginx 리버스 프록시를 사용하여 배포 할 때 해야 할 것들 (0) | 2021.02.22 |
다크모드 적용시: StatusBar (상단바) 아이콘 색상 바꿀때 유의 할 점 (0) | 2021.01.29 |
gRPC(general-purpose Remote Procedure Calls)란? (1) | 2020.12.22 |