Redis 101

DaBeen Yi
5 min readSep 3, 2021

--

Redis란 무엇인가? 어떻게 사용하는가?

시스템 관련하여 이런 저런 것들을 찾아볼 때마다 Redis라는 용어가 빠지지 않고 등장한다. 그래서 처음에는 아주 가볍게 찾아봤는데, 실습을 하려고 하니 Redis 구축을 해야할 필요가 생겼다.

그래서 이 참에 내 방식대로..! 현재의 나와 미래의 나를 위해 Redis의 개념과 설치, 간단한 운영 방식에 대해 정리를 해보려고 한다.

☝️ Redis는 in-memory 데이터 저장소

Redis(Remote Dictionary Server)란? 아주아주 함축적으로 말하자면 데이터 저장소이다. 다른 데이터 저장소보다 속도면에서 우수하고 다양한 기능을 제공한다는 장점덕분에 데이터베이스, 캐시, 메시지 브로커 및 대기열로 사용한다고 한다. 그리고 Redis 데이터는 메모리에 상주한다. 즉, 데이터를 찾으려 디스크까지 접근할 필요가 없으므로 속도면에서 강점을 갖는 것이다.

☝️ Redis를 쓰는 이유

Redis는 다음과 같이 6가지 이점을 갖는다고 한다.

(사실 운영은 커녕 테스트로도 Redis를 사용해본적이 없기때문에 아래 장점들이 다른 데이터 저장소에 비해 얼마나 효과적인지는 모르겠지만..일단 뭐 그렇다고 하니깐 😅)

  • In-memory 데이터 저장소: 디스크에 데이터를 저장하는 다른 데이터베이스들(PostgreSQL, MongoDB 등)과 달리 데이터를 메모리에 위치시킴으로서 속도면에서 우위를 점함.
  • 유연한 데이터 구조: Key-Value 구조이외에도 다양한 데이터 구조를 지원한다.
  • 단순성 및 사용 편의성
  • 복제 및 지속성
  • 높은 가용성 및 확장성(Scale-up, Scale-out)
  • 확장성: 오픈 소스인 만큼 공급업체 기술 종속적이지 않음

이런 이점들을 가지고 있는 Redis는 아래와 같은 용도로 사용될 수 있다고 한다.

  • 캐싱
  • 채팅, 메시징 및 대기열
  • 게임 순위표
  • 세션 저장
  • 미디어 스트리밍
  • 지리 공간 데이터 저장
  • 머신 러닝
  • 실시간 분석

☝️ Redis 설치

  1. 본격적인 설치 전, 시스템 업데이트
sudo yum update

2. EPEL 레포지토리 설치

  • 몇 몇 포스팅에는 REMI라는 3rd party 레포지토리를 설치하라고 하는데 이건 본인 마음인듯하다. 무슨 레포지토리가 어떤 장점을 갖고 있는지도 찾아봐야겠군하.. 🗒
sudo yum install epel-release

3. Redis 설치

sudo yum install redis

4. Redis 옵션 수정

sudo vi /etc/redis.conf

사용자의 입맛에 맞게 설정을 변경하면 됨.

5. Redis 시작 및 상태 확인

systemctl start redis
systemctl enable redis
systemctl status redis

-

[root@localhost ~]# ps aux | grep redis
redis 19178 0.0 0.3 143056 5768 ? Rsl 02:37 0:00 /usr/bin/redis-server 192.168.56.102:6379

-

[root@localhost ~]# redis-cli
127.0.0.1:6379> client list
id=3 addr=127.0.0.1:52814 fd=5 name= age=6 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client

☝️ 그래서..?

여기까지 막무가내로 설치하고보니 또 다시 막막해진다. 그래서 일단 설치는 했고 연결이 되는것까지는 확인했는데, 그래서 뭐..? 어떻게 사용해야하는거지..

그래서 (뭔가 순서가 잘못된것 같지만) 이제서야 Redis 공식 페이지를 들어가본다.

Quick Start 가이드를 읽어보니 Redis를 관리하는 명령어(?)/구성요소가 몇 가지 더 있는 것 같다.

  • redis-server: 서버 그 자체
  • redis-sentinel: 모니터링과 Failover을 위한 실행파일
  • redis-cli: Redis와 소통을 위한 command line interface
  • redis-benchmark: Redis 성능 확인
  • redis-check-aof/redis-check-rdb: 데이터 파일 관련한 이벤트 확인 시 유용

대략 굵직하게는 위의 명령어들로 Redis를 관리할 수 있다.

하지만 위의 Redis 공식 페이지에도 언급되어있다시피 Redis 서버에 직접 들어와 CLI로 관리하는것은 실제 운영 환경에서는 거의 없는 일이고, Application에서 호출하여 사용하는 경우가 대다수일 것 이다.

이처럼 Application에서 Redis를 호출해서 사용하기 위해서는 사용자의 Application에 (각 프로그래밍 언어에 맞는) Redis Client 라이브러리를 설치해야한다.

여기서 또 한가지 Redis의 강점이 나타나는데 바로 이 Redis Client를 정말 다양한 프로그래밍 언어로 지원한다는 것이다.

관련한 내용은 아래 링크에서 자세히 확인할 수 있다.

☝️ Beyond

Redis에 대한 기본적인 개념조차 없었다가 포스팅 작성을 통해 Redis의 일부분에 대해서 알게되면서 실제 운영 환경에서 Redis가 어떻게 동작을 하는지 들으면 얼추 이해할 수 있을거라는 기대가 생겼다!

이렇게 찔끔찔끔 알게되는게 큰 의미가 있나싶지만 뭐 내가 언제는 인생에서 큰 의미를 찾았나? 어찌됐든 시작한게 중요한거지! 라는 긍정적인 마음으로 이번 포스팅은 마무리하려고 한다.

🍰

--

--

No responses yet