Redis!!!!
말로만 듣던 Redis 강의를 듣게 되었다.
강의 내용을 정리하려는데, 오늘은 소개와 설치 방법만 정리해보려고 함!
Redis 소개
인 메모리 데이터 베이스
- 원래는 오픈 소스였으나, 현재는 상용 라이센스가 적용
- 하지만 일반 개발자에겐 큰 문제는 없음(일반적인 제약X)
- 클라우드 서비스 제공자에게는 라이센스 변경이 있을 수 있음
관계형 데이터 베이스(MySQL, Oracle…)
- 테이블 형태로 데이터 저장
- 서비스 종료 후 다시 시작해도 데이터를 그대로 복원할 수 있음
- 영속성, 일관성 측면에 중점
- 보통은 파일 시스템(HDD,SDD)에 데이터 저장
- 파일 시스템에 저장(변경)하는 것은 상대적으로 느림
- H2는일반적이 관계형 데이터베이스와 다름
- In-Memory 옵션을 제공하여 메모리 상에 관계형 데이터베이스를 운영할 수 있음
- 데이터를 테이블 형태로 저장하긴 하지만, 파일 시스템에 저장하지 않고 메모리 상에만 데이터를 저장
- 영속성을 신경 쓰지 않음
인 메모리 데이터 베이스(Redis…)
- 메모리 내에서 데이터를 빠르게 변경하고 처리할 수 있어 상대적으로 속도가 빠름
- Redis는 외부 데이터베이스이기 때문에, 여러 애플리케이션에서 동시에 접근하고 데이터를 공유하는 용도로 많이 사용
- 메모리(RAM)은 휘발성을 가짐
- 상대적으로 많이 변하고 삭제되고 많이 쓰이는 데이터를 사용하는 기능에 많이 사용됨
- 예를 들면,
- 세션 정보
- 장바구니 기능
- 조회수 기능
- 캐싱 시스템
- 실시간 분석
- 메시지 큐
NoSQL Database
Redis는 NoSQL Database의 일종
- SQL을 일반적으로 사용하지 않음
- 관계형 테이블을 사용하지 않으며, 따라서 스키마가 존재하지 않음
- Redis는 자체 명령어인 SET, GET 등을 사용하여 데이터를 처리
NoSQL의 등장 배경
- 데이터 크기가 커짐
- 비정형 데이터 증가
- 일관성 대신 확장성, 유연성 증가
- 관계형 데이터 베이스가 가지고 있는 확장성과 유연성에 대한 단점을 해결하기 위해
- 일관성을 포기하고 확장성과 유연성을 증가 시키는 데 목적
NoSQL의 종류
Key - Value | Document | Column Family |
redis | MongoDB | cassandra |
- Key - Value
- Key에 맞춰서 Value가 존재
- Document
- JSON, XML 형태로 데이터 저장
- Column Family(Wide-Column)
- 하나의 row에 column이 정해져 있지 않음, 각 Row마다 Column Family를 구성
- Column이 어떤 종류의 데이터이며 데이터가 무엇이고 들어간 시간은 언제인지(타임스탬프) 기록하는 형태로 동작
💡정리하자면, Redis는
▪️Key-Value NoSQL Database
▪️메모리 상에 데이터 저장(인 메모리)
▪️데이터 변경이 잦은 기능을 다룰 때 많이 사용
▫️ 리더보드, 방문자 트래킹…
▫️ Session Clustering
▫️ Caching
Redis 설치
- Redis도 서버 클라이언트
- Spring Boot 애플리케이션이랑 데이터를 주고 받음
- 데이터베이스와 역할이 같지만 메모리에 저장한다는 차이만 있음
1. 내 컴퓨터에 직접 설치
권장하지 않는 방법인 이유
- 내 컴퓨터를 건드는 것
- 완벽히 삭제하기 어려움
- 상황에 따라 서버를 켜놓지 않았는데 돌아가는 경우 발생
Community Edition
Get started with Redis Community Edition
redis.io
- OS마다 설치 방법이 다름
- MacOS : Brew 패티지 관리자
- Window+Linux : APT 패키지 관리자
Window
1. WSL 설치
WSL 설치
wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니
learn.microsoft.com
- Windows Subsystem for Linux(WSL) 필요
- Windows에 Linux 환경 구성을 하기 위해서 마이크로소프트가 제공하는 기능
- Windows에 있는 Linux 하위 시스템
2. CMD 창 열기
1) ubuntu 실행
wsl
2) APT의 저장소 목록에 Redis의 저장소를 추가하고 설치
# Redis 저장소 추가
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
# 추가된 저장소를 사용하도록 업데이트
sudo apt-get update
# redis 설치
sudo apt-get install redis
3. 로컬 환경에서 Redis 접속
redis-cli
- 명령어로 내 컴퓨터의 Redis 서버와 소통
PING
> PONG
SET start "hello World"
> OK
GET start
> "hello World"
DEL start
> (integer) 1
exit
4. Redis 서비스의 상태를 확인 및 중지
sudo systemctl status redis
- brew와 마찬가지로 apt로 설치를 하게 되면 시스템 데몬에 자동으로 등록됨
- 컴퓨터를 껐다 키면 자동으로 백그라운드에서 Redis가 실행됨
- 이에 관한 문제가, 나중에 Docker로 Redis를 설치하는 과정에서 설치가 안 되는 경우 발생
- 따라서, 로컬에 설치하는 것은 관리 측면에서 힘들 때가 있기 때문에 로컬에 설치하는 것을 권장하지 않음
sudo systemctl stop redis
2. Docker로 설치 (추천)
실습 스프링 프로젝트를 하나 만들고 이어서 진행! [더보기]
- 격리된 컨테이너 환경에 설치함
Run Redis Stack on Docker
How to install Redis Stack using Docker
redis.io
https://hub.docker.com/search?q=redis
hub.docker.com
- redis-stack 사용
1. 빈 폴더를 만들고, docker-compose.yml을 생성
services:
redis-stack:
image: redis/redis-stack
container_name: redis-stack-compose
restart: always
environment:
REDIS_ARGS: "--requirepass systempass"
ports:
- 6379:6379
- 8001:8001
2. 터미널 (Windows의 경우 WSL)에서 해당 폴더로 이동 후 다음 명령을 실행하면 자동으로 최신 버전의 Redis Stack 이미지를 사용하게 됨
docker compose up -d
3. 다음 명령으로 Redis 컨테이너가 정상적으로 실행되었는지 확인
docker compose ps
Intellij IDEA에서 Redis 연결
1. database 아이콘 클릭 > [+] 클릭 > Redis 선택
2. User, Password 입력 후 Test Connection 클릭하면 Succeeded 됨 > [OK] 클릭
3. Redis Console에 명령어 입력
- 정산적으로 설치 완료
- 데이터베이스 비우기