Redis Cache 개념

구본식·2023년 1월 6일
0
post-thumbnail

Redis Cache

1. Redis의 개념

Redis는 오픈소스로써 NoSQL로 분류되기도 하고 ,Memcached와 같은 인메모리 솔류션으로 분류되기도 한다. 성능은 Memcached의 성능을 낼수 있으며 다양한 데이터 구조체를 지원한다.
DB,Cache,Shared Memory등의 용도로 사용되어 진다.

Redis cache 성능이 좋은 이유는
1. 디스크에 처리하는것이아닌 메모리에서 데이터를 처리하기 때문.
2. Key-Value 방식의 맵 형태로 저장되어 별도의 쿼리 없이 값을 가져올수 있기 때문.

Memcached란?
무료로 사용할수 있는 오픈소스이며 분산 메모리 캐싱 시스템이다.
데이터 베이스의 부하를 줄여 웹 어플리케이션의 성능을 개선시키기 위해서 사용된다. DB나 API호출로 부터 받아오는 결과 데이터를 작은 단위의 Key-Value형태로 메모리에 저장하는 방식이다.


그림 1는 Memcached를 사용하지 않을때 웹 서버를 각각 운영되는 상황이다. 두 서버가 독립적으로 운영되기 때문에 각 서버는 할당된 Cache 용량 만큼만 사용할수 있게된다.

그림 2는 Memcached를 사용할때 웹 서버를 각각 운영되는 상황이다. 물리적으로 별도의 Cache를 로직상 하나의 Cache로 사용할수 있게 해준다. 즉 논리적으로는 Cache가 결합되어 있기 때문에 각 웹서버는 전체 메모리 캐시 용량 만큼 사용할수 있다.
한 서버가 자신에게 할당된 Cache보다 더 많이 사용해야 하는경우 Cache를 많이 사용하지 않은 서버의 Cache영역을 사용할수 있는 것이다.

단점
1. 인 메모리 기반의 시스템이므로 데이터가 메모리에만 저장되고 휘발성인 특징으로 인해 프 로그램 종료시 데이터가 모두 소멸된다.
=> 영구 저장이 필요하다면 메모리에 저장된 데이터를 DB같은 곳에 저장하고 재부팅시 DB로 부터 데이터를 읽어들려야된다.
2. Redis Cache 처럼 데이터 타입과 API가 다양하지 않다.

장점
1. 캐싱처리를 통해 DB/API 통신을 줄일수 있다.
2. Redis는 트래픽이 몰리면 응답속도가 불안정 반면에 트래픽이 몰려도 memcached의 응답 속도는 안정적인편이다.
3. 객체를 캐시할수 있다.

Memcached vs Redis

2. Redis 특징

2.1 영속성을 지원하는 인 메모리 데이터 방식

RedisMemcached와 같이 인메모리 데이터 방식을 지원하지만 차이점은 영속성을 보장하기 위해 데이터를 디스크에 저장할수 있다. 서버가 종료되더라도 디스크에 저장된 데이터를 읽어 메모리에 로딩하게 된다. 데이터를 디스크에 저장하는 방식은 크게 2가지가 있다.

2.2 다양한 자료구조를 지원

Memached와 다르게 Key의 자료형으로 다양한 구조체들을 지원한다.
String, Bitmaps,Hashes,Lists,Sets 등

2.3 싱글 스레드 방식으로 인해 연산을 원자적으로 수행

Redis는 싱글 스레드 방식을 사용하기 때문에 연산을 원자적으로 처리하여 Race Conditions이 거의 발생하지 않는다.

Race Conditions이란?
두개 이상의 프로세스가 공유자원을 병행적으로 읽거나 쓰려는 동작을 할때 공유 자원에 대한 접근이 어떤순서로 이루어졌는지에 따라 동일한 결과가 나오지 않는 상황. 즉 실행결과가 같지 않은 상황.

싱글 스레드방식을 사용하기 때문에 하나의 트랜잭션은 하나의 명령어만 실행할수 있으므로 Race Condition을 막을수 있다.

참고자료 : https://velog.io/@kyhm1519/Memcached

profile
백엔드 개발자를 꿈꾸며 기록중💻

0개의 댓글