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