새롭게 쌓은 지식

캐시에 대하여

app0a 2022. 9. 26. 11:31
# 캐시의 개념

 

 

 

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

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

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

 

 

 

 

데이터베이스 에서의 캐시

 

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

 

 

 

 

(데이터베이스 이중화)

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