Redis: Remote Dictionary Server
Redis는 메모리 내(In-Memory)에서 데이터를 저장하고 관리하는 오픈 소스 데이터 구조 서버입니다.
Redis 특징
1. In-Memory Store
Redis는 메모리 내에 데이터를 저장할 수 있는 In-Memory DB 입니다. 디스크보다 메모리에서 데이터를 읽고 쓰는 것이 빠르기 때문에 데이터에 빠르게 액세스 할 수 있습니다. 이러한 특징으로 Redis는 캐시 역할도 하여 다른 DB의 부하를 줄이고 응용 프로그램의 성능을 향상시킬 수 있습니다.
Redis는 In-Memory 즉, 휘발성인 RAM에 저장하기 때문에 데이터가 영속성을 갖지 않는 문제가 있습니다.
2. 휘발성
Redis는 메모리 내에 데이터를 저장하기 때문에 시스템을 다시 시작할 때 데이터를 잃어버릴 수 있습니다. 즉 영속성을 갖고있지 않습니다. 하지만 Redis 데이터 액세스 속도가 매우 빠르기 때문에 속도와 휘발성을 절충하는 방법들을 생각하였습니다.
- Redis를 휘발성 용도에 맞춰 사용하기
Redis에 담긴 데이터는 영속성을 갖지 않기 때문에 세션 데이터 같은 단기적인 데이터를 저장하는 방법입니다.
(세션 데이터는 휘발돼도 치명적인 문제가 생기지 않은 데이터가 담깁니다.) - Cache로 사용하기
첫 번째 절충안과 결이 같은 방법입니다. 디스크의 접근을 줄이기 위해 DB 접근 전에 캐시(Redis)에 먼저 접근하게 하는 방법입니다. - Redis 데이터 백업하기
Redis에 있는 데이터를 디스크에 백업하여 어느정도의 영속성을 확보하는 방법입니다.
3. Key-Value Store
Redis는 단순한 Key-Value 형태의 데이터 구조를 갖고 있습니다. Key 값을 통해 Value 값을 찾아내는데, 이때 Key 값을 Hash을 이용해 값을 읽기 때문에 속도가 빠르다는 장점이 있습니다. 반대로 Key-Value이기 떄문에 범위 검색 같은 질의가 불가능합니다.
각 Key는 고유하고, 해당 키에는 문자열, 해시, 리스트, 집합, 정렬 집합 등 다양한 데이터 유형의 값이 저장됩니다.
Redis 설치
가상 환경인 컨테이너 Docker에 Redis를 설치하겠습니다.
1. docker 설치
- Windows: Home 버전인 경우 WSL (Windows Subsystem for Linux) 를 이용해주어야 했지만, 이제는 그냥 WSL2를 활용해 작동하는 것이 권장되기 때문에 WSL2를 설치하고 Docker를 설치해줍니다.
- Mac: brew 패키지 관리자를 사용하여 설치해줍니다.
- Linux: apt-get, yum 패키지 관리자를 사용하여 설치해줍니다.
저의 경우 Docker를 UI를 이용해 쉽게 사용할 수 있게 해주는 Docker Desktop을 설치하여 사용하도록 하겠습니다. Docker Desktop도 마찬가지로 WIndows 환경일 때 WSL2를 설치하여야 작동함을 주의해야합니다.
https://www.docker.com/products/docker-desktop/
2. redis 설치
docker-desktop을 설치하여 위 검색창에 redis를 검색하여 다운 받을 수 있습니다. 하지만 그냥 docker만 설치한 사람도 있을 수 있기 때문에 커맨드 라인 방식으로 설명하도록 하겠습니다. (docker desktop)을 설치하여도 커맨드 라인 사용할 수 있습니다.
:: Docker Registry에서 redis 이미지 불러오기
:: 버전을 명시하지 않은 경우 최신 버전의 이미지 불러옴
> docker pull redis
3. redis 실행 및 중단
docker-desktop의 경우 UI를 통해 Redis를 실행하고 삭제하는 것 까지 전부 제어할 수 있습니다.
docker만 설치하였을 경우 아래와 같이 제어가능합니다. docker-desktop 역시 가능합니다.
:: Redis 실행 (최초, 컨테이너 생성)
> docker run --name myredis -d -p 6379:6379 redis
:: docker에서 실행중인 프로세스 확인
> docker ps
:: Redis 중단
> docker stop myredis
:: Redis 재시작
> docker start myredis
:: Redis 컨테이너 삭제
> docker rm myredis
4. redis 명령어 사용
docker-desktop의 경우 [Open in terminal]을 통해 Redis 명령어를 입력할 수 있습니다.
docker 만 설치하였을 경우 아래와 같이 redis 명령어를 실행할 수 있습니다. docker-desktop 역시 가능합니다.
:: Docker Container 안에서 shell 실행
> docker exec -it myredis /bin/sh
:: shell에서 Redis-cli 실행
:: redis-cli: redis 서버 커맨드를 실행할 수 있는 인터페이스입니다.
:: redis 서버가 컨테이너 내에 있기 때문에 redis-cli도 컨테이너 내부에서 실행해야 합니다.
:: 호스트와 포트를 지정하지 않으면 127.0.0.1:6379가 사용됩니다.
# redis-cli
:: 명령어 실행
127.0.0.1:6379> [redis 명령어]
'DBMS > Redis' 카테고리의 다른 글
Redis redis를 이용하여 랭킹 리더보드 구현하기 (0) | 2024.02.06 |
---|---|
Redis redis-cli 명령어 정리 (2) | 2024.02.05 |