Redis 왜 쓸까?

Redis 왜 쓸까?

카테고리
Nest.js
날짜
2024년 07월 09일
작성자
JeongjungsikJeongjungsik
태그
redis

왜 쓰일까?

레디스는 메모리 기반 DB로 아주 빠르다. 다른 데이터베이스(mysql)보다 두배 다섯배 이런식으로 빠른게 아닌 백배만큼 빠르다.
 
그래서 주로 로그인 정보를 담거나, 검색 요청 용도로 많이 쓰인다.
 
  1. 레디스에 먼저 해당 데이터 검색 요청
  1. 없으면 (cache-miss) 메인 DB에 데이터 검색 요청, 메인 DB에 데이터가 있으면(cache-hit)
  1. 레디스 캐싱처리를 위해 레디스에 먼저 저장시켜주고 브라우저에 응답시켜줌
 
보통 위와 같은 형태로 쓰이고 또한, 데이터 저장을 요청하는게 많을 경우 레디스에 먼저 임시저장 후 메인 DB에 저장시키는 형식으로도 많이 쓰인다.
 

redis-cli with docker

  • 다음 명령어로 레디스를 설치한 해당 컨테이너로 접속
docker exec -it ‘containerID’ /bin/bash
 
  • 다음 명령어로 레디스 접속
redis-cli
 
  • 이후부턴 redis의 메모리 사용 설정을 확인하고 세팅하는 명령어다.
// 다음 명령어로 최대 메모리 사용 확인 가능, 기본값은 0으로되어있고 // 내 컴퓨터 메모리 전부 꽉 찰때까지 사용하겠다는 뜻이다. // 보통은 70%로 잡는게 좋다. config get maxmemory // 기본값 0 keys * // 모든 key 값 확인, 레디스는 key와 value 형태로 이루어져있음 set abc apple // abc 라는 key의 value값으로 apple 설정 get abc // abc라는 key의 value값 확인 // 저장유효시간 확인, 버전에 따라 다르긴한데 보통 -1이 나오면 영구 저장이라는 소리, // -2는 ttl이 끝난것 (해당 key가 삭제된 것) ttl abc expire abc 20 // 저장유효시간 20초로 설정, 20초뒤 삭제됌
 

메모리가 꽉차면 어떻게할지 결정하기

💡
config get maxmemory-policy 명령어로 레디스 정책 확인 가능
레디스의 기본 정책은 noeviction 으로 메모리가 꽉 차도 기존 데이터를 삭제안하는 정책으로 되어있다.
이 정책은 결국 메모리를 다 사용하게 되면 프로그램이 종료가 되버리게된다.
 
레디스의 정책은 엄청 다양하게있는데, 그 중에서 allkeys-lru 방식이 권장되는 방식이다.
allkeys-lru 방식은 모든 key들 중에서 가장 오랫동안 사용/참조 되지 않은 값을
알고리즘 기반으로 Key를 삭제하는 방식이다.
 

댓글

guest