1. Redis란?
Redis는 리눅스 기반의 key-value 기반 메모리 서버이다. 비관계형 데이터베이스(NoSQL)기반으로 구성된다. 주로 잦은 접근이 필요한 데이터를 메모리에 저장하여 통신 속도를 높이는데 사용한다. 예컨대 웹 서비스에서 모든 사용자의 요청에 대해 사용자의 접근 권한을 확인한다. 이때 매번 데이터베이스에 연결하여 권한 정보를 가져오는 것은 비용이 매우 크고 느린 작업이므로 Redis에 접근하면 미리 Redis에 저장해둔 정보를 통해 빠르게 정보를 확인하고 응답할 수 있다.
source : 유튜브 영상 - Redis Labs and SQL Server
또한 주요 특징으로 Single thread로 작동한다는 특징이 있다. 따라서 어떤 요청이 redis에서 수행되고 있다면 다른 요청은 선행 요청이 완료될 때까지 대기해야한다. 이러한 단점 때문에 보통은 같은 종류의 객체(데이터)는 10,000개 까지만 1개의 redis server에 보관하고 나머지는 여러 server에 분산하여 저장하고 clustering하여 관리한다.
Local Memory를 사용하지 않고 Redis를 사용하는 이유(참조 1)
그런데 자주 접근이 필요한 정보는 각 서버의 컴퓨터의 memory에 저장하면 되지 않을까 하는 의문이 들 수 있다. Redis와 같은 원격 메모리 저장소를 이용할려면 결국 통신 커넥션을 생성해야하고, 이것 또한 응답 속도를 느리게하는 원인이 되기 때문이다. 그럼에도 불구하고 Redis를 사용하는 이유는 다음과 같다.
- Sharding(데이터 분산 저장), Replication(복제)이 가능하여 데이터 관리 효율이 높다.
- 원격 Cache Server를 사용하기 떄문에 서버간 데이터 공유가 쉽다.
- 분산되어 있는 서버리스(Serverless) 애플리케이션 서비스를 사용하는 경우, 로컬 메모리로는 대응이 어렵다.
상세한 구조나 내용은 일단 Redis를 만들면서 기초적인 부분을 이해한다음 학습해도 된다.
2. 설치 및 도구
Redis는 리눅스 기반이라서 Windows의 경우 cmd로 실행하거나 GUI 툴을 이용해야한다.
Redis-cli
명령어 기반의 redis-cli를 이용할 수 있다. 자세한 설치 방법이나 기초적인 문법은 많은 소스가 있으므로 여기서는 링크와 기본 실행 방법만 서술한다.
https://redis.io/download/
압축을 풀고, cmd로 해당 path에 들어가서 redis를 실행하면 된다! 예를 들면 아래와 같다.
-참고 : cmd 명령어
dir : path 내 directory || file 목록 확인
cd : [directory || file] : path 이동
-접속 명령어
redis-cli.exe -h [호스트 서버 이름] -p [포트 번호] -a [비밀번호]
Redis GUI Tool
Redis GUI Tool은 GUI(Graphic User Interface)를 통해 Redis의 명령어나 성능 지표 모니터링 등을 좀 더 쉽게 볼 수 있도록 해준다.
RESP.app
연결도 잘 되고, UI도 보기 편하다. 게다가 성능을 실시간으로 볼 수 있는 그래프들도 제공한다. 그런데 유료이다. 15일간 무료로 사용할 수도 있으니 한번쯤 설치해보면 좋다. Redis의 기본적인 구성을 UI로 보고 익히는데 많은 도움이 된다.
P3X Redis
https://www.electronjs.org/apps/p3x-redis-ui
무료이고, 그나마 기본적인 데이터 정보들은 잘 보여준다. 그러나 연결 관리가 번거롭고(redis는 일정 시간이 지나면 연결이 자동으로 끊긴다), 지원하는 기능도 적다.
다른 툴도 많다. 그러나 기본적인 명령어를 익히는 등 처음 학습용으로는 CLI 툴이 괜찮은 것 같다.
참조
1. Local memory 대비 장점
-Redis cache vs using memory directly
-https://zangzangs.tistory.com/72
2. 기본 명령어
https://velog.io/@limsubin/redis-cli-%EB%AA%85%EB%A0%B9%EC%96%B4%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90-%EA%B8%B0%EB%B3%B8%ED%8E%B8