안녕하세요. 남산돈가스입니다.
이번 포스팅에서는 Redis의 개념을 알아보고, 설치하는 과정까지 포스팅하고 자세한 내용은 추후 포스팅으로 작성할 예정입니다.
Redis?
레디스는 Remote Dictionary Server의 약자이며, 단어 그대로 생각해보면 원격.. 사전.. 서버..?
원격, 서버와 같은 키워드는 뭐 그렇다고 치고 그럼 사전은 뭔가 싶을텐데요. Dictionary는 아마 Python을 사용하시는 개발자분들이라면 듣자마자 이해하셨을 거라고 생각합니다. 여기서 Dictionary는 key-value 의 쌍을 가지는 데이터 구조를 뜻합니다.
그러므로 우리는 Redis란 원격에서 관리되는 key-value의 데이터를 가지고있는 서버 정도라고 해석할 수 있겠네요. 단어 정도로도 어느정도 Redis의 설명이 된 것 같습니다.
결론부터 말씀드리자면 Redis는 오픈소스로 제공되는 In-Memory DataStore 입니다. In-Memory ?
기존 우리가 아는 데이터베이스는 디스크에 데이터들을 저장하는 것과 달리 Redis는 모든 데이터들을 메모리에 저장하고 사용하게 됩니다. 디스크보다 메모리 접근 속도가 훨씬 빠르기 때문에 기존 DB보다 Redis는 훨씬 빠른 성능을 자랑합니다. 또한 메모리에 저장되므로 휘발성이겠죠.
그리고 또 다른 Redis의 큰 특징 중 하나는 다양한 자료구조를 지원하는 것 입니다.
위 그림은 Redis가 제공하는 자료구조들입니다.
- String
- Bitmap
- Hash
- List
- Set
- Sorted Set
- Geospatial IndexString
- Hyperloglog
- Stream
이렇게 다양한 자료구조를 제공함으로써, 애플리케이션이나 서비스 구성 시 필요한 적시적소에 Redis를 적용하여 사용할 수 있게 됩니다.
Redis 대표적 사용용도
Redis는 대표적으로 세 가지 목적으로 사용됩니다.
• In-Memory Database : redis는 key-value 구조의 대표적인 NoSQL입니다.
• Cache : temporary data를 읽고 쓰기위한 cache server로 redis가 사용됩니다.
• Message Broker : redis를 사용해 메세지를 publish/subscribe 할 수 있습니다.
NoSQL과 같이 key-value 형태(언어 별로 JSON, HashMap, Dictionary 등) 로 제공될 수 있으며,
실제 데이터를 관리하는 RDBMS의 성능을 높이기위한 Cache의 기능을 하며,
redis의 자료구조들을 이용하여, pub/sub(생산자-소비자) 기능을 하는 Message Broker 역할을 하기도 합니다.
위 사용용도에 대해서는 추후 포스팅에서 상세하게 다루어보도록 하겠습니다.
Redis 설치
현재 제 작업환경이 Mac이라서 Mac기준으로 설명드리겠습니다.
Mac은 homebrew를 이용하여 설치해보았습니다.
$ brew install redis
위 명령어로 redis를 설치하신 뒤,
$ brew services start redis
$ brew services stop redis
$ brew services restart redis
services 명령으로 redis 서비스를 시작/중단/재시작 할 수 있습니다.
redis 서비스가 정상적으로 실행되고 있는 지 확인하시려면 redis-cli를 사용하실 수 있습니다.
$ redis-cli ping
PONG
redis-cli ping을 명령하면 PONG이라고 응답이 오면 정상적으로 redis가 실행되고 있는 상태입니다.
$ redis-server
redis-server 명령을 입력하면 redis-server가 실행됩니다.
감사합니다.
'Programming > Database' 카테고리의 다른 글
Redis의 자료구조 (0) | 2020.07.27 |
---|---|
[MySQL] Query Plan 보는 법 (1) | 2020.05.13 |
[MySQL] DB Time Zone 변경 (0) | 2020.04.20 |
MongoDB 외부 접속 허용하기 (0) | 2020.04.17 |
Linux Ubuntu에서 Mongo DB 설치하기 (0) | 2020.04.17 |