Redis
Redis(Remote Dictionary Server)는 가장 인기있는 Key-value Store 중 하나이다.
데이터 저장소하면 보통 MySQL이나 PostgreSQL, MariaDB, Oracle 같은 RDBMS를 많이 떠올릴텐데
이러한 RDBMS와 달리 Redis는 NoSQL이다.
이 둘의 차이는 무엇일까?
다음 포스팅에 자세히 적어놓았다.
https://develoyummer.tistory.com/99
Redis에서 Key 로 올 수 있는 자료형은 기본적으로 String이지만,
Value는 다양한 타입을 지원하며, 메모리 기반의 DB이기 때문에, Disk를 기반으로 하는 RDBMS보다 read가 빠르다.
value data type으로는 strings, lists, sets, hashes, sorted sets....등이 올 수 있다.
또한 인메모리 형식이기 때문에 HDD나 SDD를 쓰는 DB에 비해 응답성이 빠르고, 캐시로도 많이 사용된다.
Hash Map vs. Redis
key-value 기반이고,
메모리 베이스이며,
원하는 value를 원하는 표현방식으로 넣을 수 있다는 점에서 HashMap과 비슷한데 왜 Redis를 사용할까?
서버가 여러대 있는 분산 서버 환경에선 Redis의 장점이 드러난다.
💡분산 환경에서 Redis의 장점
서버를 증설한 상황에서 동일한 해쉬맵 데이터를 참조해야 할 상황 시,
분산 환경에선 원격 프로세스간 데이터를 동기화하기 어렵다.
그러나 별도의 레디스 서버를 구성하고, 해당 레디스에서 값을 꺼내 쓴다면,
메모리 기반 데이터 구조의 빠른 응답성을 확보함과 동시에, 데이터 불일치 문제를 해결할 수 있다.
또한 어플리케이션을 종료하면 휘발되어 사라져버리는 HashMap과 달리, Redis는 다양한 영속성(디스크에 백업) 옵션을 제공한다.
https://redis.io/docs/management/persistence/
레디스 설치법
https://redis.io/docs/getting-started/
Windows에 Redis를 설치하려면 먼저 WSL2 (Linux용 Windows 하위 시스템) 를 활성화해야 한다 .
(우분투 가정 가이드)
공식 packages.redis.ioAPT 리포지토리에서 Redis의 최신 안정 버전을 설치할 수 있다.
아주 최소한의 배포(Docker 컨테이너 등)를 실행하는 경우 를 설치 하고 먼저 아래 명령어를 수행해야 할 수 있다.
sudo apt install lsb-release curl gpg
apt 인덱스에 다음 레포지토리를 추가하고, 업데이트 한 후 설치한다.
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
sudo apt-get install redis
마지막으로 다음 명령어로 Redis 서버를 시작
sudo service redis-server start
레디스에 연결
Redis CLI와 연결하여 Redis 서버가 실행 중인지 테스트할 수 있다.
redis-cli
127.0.0.1:6379> ping
PONG
사용법
📌 SET 값을 세팅
SET [keyname] [value]
📌GET 값을 찾아옴
GET [keyname]
📌MSET 여러 키 동시에 세팅
MSET [keyname1] [value1] [keyname2] [value2]...
📌MGET 여러 키 동시에 찾아옴 =
MGET [keyname1] [keyname2] [keyname3]...
📌EXIST value의 존재 여부 확인
EXIST [keyname1] [keyname2]
(있으면 1, 없으면 0 반환, 여러 인자를 준 경우 존재하는 갯수 반환)
📌 DEL 해당 키 삭제
DEL [keyname1] [keyname2]
(성공시 1, 실패시 0 반환)
📌EXPIRE => TTL설정(단위는 초)
EXPIRE [keyname] 5
https://www.youtube.com/watch?v=sqVByJ5tbNA
'etc' 카테고리의 다른 글
Github Actions를 통한 배포 자동화 (0) | 2023.07.28 |
---|---|
[프로젝트] redis 적용 (0) | 2023.06.23 |
NoSQL과 RDBMS의 차이 (0) | 2023.06.21 |
[mustache]spring boot 프로젝트에 mustache 템플릿 엔진 적용해보기 (0) | 2023.04.10 |
development 기초 (0) | 2022.08.24 |