Remote Dictionary Server의 약자로, key-value 구조를 가진 NoSQL 데이터베이스다.
MySQL, Oracle 같은 일반 데이터베이스와 다르게 디스크(SSD, HDD)에서 데이터를 처리하는 것이 아니라,
In-Memory(인메모리) 기반의 데이터베이스로 메모리(RAM)에서 데이터를 처리하기 때문에 작업 속도가 월등히 빠르다.
Redis에 데이터를 저장할 때 Expire Time을 지정하여 일정시간이 지나면 데이터가 삭제될 수 있도록 할 수 있다.
그러나 Expire Time을 긴 시간으로 지정하거나 또는 Expire Time을 지정하지 않을 경우 Redis 서버의 지정된 Memory가 가득 차게 된다.
따라서, Redis에 메모리의 데이터가 MAXMEMORY-POLICY 설정의 따라 데이터를 유지 또는 삭제하는 설정이 필요하다.
noeviction (default)
MAXMEMORY-POLICY 기본 정책이다. 메모리에 데이터가 가득 차면 Redis에 새로운 키를 저장하지 않는다. 즉, 메모리가 가득 차면 Redis의 새로운 데이터를 입력하는 게 불가능하기 때문에 서비스 장애가 발생할 수 있다.
volatile-lru
Expire Time이 설정된 키 중에서 가장 오래도록 사용하지 않았던 키를 삭제한다.
메모리에 데이터가 모두 가득 차고 Expire Time 설정값이 없는 키만 남은 경우 Redis의 새로운 데이터를 입력하는 게 불가능하기 때문에 서비스 장애가 발생할 수 있다.
allkey-lru
모든 키 중에서 가장 오래도록 사용하지 않았던 키를 삭제한다. 초기 세팅 중 가장 권장하는 설정이다.
많이 사용되는 방식 중 하나는 레디스를 바로 캐싱 서버로만 사용하는 것이다.
작게는 토큰 등을 통해 계정 인증 정보 등을 저장하는 용도로 사용될 수 있다. 이때 데이터의 사용 기한을 설정할 수 있는 expire 기능이 유용하다.
크게는 많이 조회되는 DB 데이터를 캐싱하는 용도로도 사용할 수 있다. 한 번 불려 온 데이터는 비교적 빠르게 조회할 수 있도록 캐싱하는 것이다.
Redis를 활용할 때 중요한 것은, 휘발성이 강한 Redis의 특성을 고려하여 유실되어도 비교적 무방한 데이터들을 저장하여 사용하도록 하는 것이다.
로드밸런싱 / 서버 부하 분산 (Server Load Balancing) (93) | 2023.09.28 |
---|---|
쿠키(Cookie) 세션(Session) (0) | 2022.10.31 |
정규식(Regular Expression) (1) | 2022.08.24 |
프로그래밍 사칙연산 부동소수점 오차 (0.1 + 1.1 != 1.2) (0) | 2022.08.16 |
MSA(MicroService Architecture) (0) | 2022.07.20 |
댓글 영역