본문 바로가기

새롭게 쌓은 지식

캐시에 대하여

# 캐시의 개념

 

 

 

- 자주 사용하는 데이터를 복사해놓은 임시 장소

- 사용되었던 데이터는 다시 사용되어질 가능성이 높다는 개념 을 이용하여, 

   다시 사용될 확률이 높은 것은 더 빠르게 접근 가능한 저장소를 사용한다는 개념

 

 

 

 

데이터베이스 에서의 캐시

 

웹 애플리케이션은 대부분 관계형 데이터베이스를 두고 데이터 트랜잭션 위주로 운영되는 경우가 많다. 규모가 큰 사이트는 성능을 위해 애플리케이션 서버나 데이터베이스 서버를 이중화하는데 사용자가 많이 몰리면 병목이 되는 곳은 데이터베이스인 경우가 많다.

 

 

 

 

(데이터베이스 이중화)

https://dont-be-evil.tistory.com/246?category=1069733 

 

Sharding, Clustering, Replication

https://www.youtube.com/watch?v=y42TXZKFfqQ&list=WL&index=1&t=10s 다 봐라 배속으로 출처 : https://www.youtube.com/c/%EC%9A%B0%EC%95%84%ED%95%9CTech 우아한Tech 우아한형제들의 기술조직 이야기를 전하는..

dont-be-evil.tistory.com

 

 

 


데이터베이스의 성능을 향상하는 방법이 여러가지가 있는데 가장 근본적인 방법은 데이터베이스 질의를 줄이는 것이라고 할 수 있다. 애플리케이션 입장에서 캐시는 데이터베이스의 데이터를 정적인 메모리에 보관해뒀다가 필요할 때 데이터베이스가 아니라 메모리에서 바로 꺼내 쓰면 되는 것이다.

 

 


그래서 캐시의 기본적인 형태는 아래 그림과 같이 데이터를 쌓아두고 원하는 데이터를 바로 찾을 수 있도록 키(key)를 부여하여 호출 측에서 해당 키를 캐시에 넘기면 그에 해당하는 데이터가 반환되게 하는 것이다. Key/Values 형태의 데이터 구조는 대표적으로 HashTable을 사용하면 바로 구현이 가능하다.

 

 

 

 

 

 

 

# 캐싱은 언제 하나?

 

 

 

캐시에 들어갈 데이터는 자주 사용하면서도 변경은 자주 일어나지 않고 (Read는 많고 Write는 적은) 그 데이터 양이 너무 크지 않은 것을 선택하는 것이 적합하다. 자주 사용하는 것을 캐싱할 수록 성능 향상에 도움이 될 것인데 양이 크다면 그 만큼 애플리케이션이 사용할 메모리를 소모하므로 메모리 성능에 악영향이 있을 수 있기 때문이다.

 

또 변경이 자주 일어나면 캐시나 데이터베이스를 그에 맞게 갱신해줘야 하므로 캐시와 데이터베이스간의 트랜잭션이 자주 발생하게 될 것이다. 

 

 

 

 

 

 

 

 

# Redis

 

인메모리 캐시인 Redis에 대해 간단히 알아보자..

 

 

1. 메모리 위에서 동작하는 Key/value 저장소(Store)인 Redis는 NoSQL DBMS로 분류되며 동시에 Memcached와 같은 인메모리(In-memory) 솔루션으로 분리된다.


2. 명시적으로 삭제, expire를 설정하지 않으면 데이터는 삭제되지 않는다.(영구 보존)

 


3. 여러대의 서버 구성이 가능하다.

 

 

 

 

인메모리 캐시

 

 

 

 

 

 

 

 

 

 

꾸준히 다시 보자

1. 221004

2. 221026

Recent Posts
Popular Posts
Recent Comments