Cache에 대해서 먼저 알아보자. 

Cache는 작은 저장공간을 가지지만 빠른 액세스 속도를 특징으로 가지고 있습니다. 따라서 자주 사용되는 데이터를 임시 저장소에 저장해 빠른 응답 속도를 위해서 사용됩니다. 

 

[그럼 어떠한 데이터에 Cache를 사용하면 좋을까?]

1. 반복적인 결과를 돌려주는 데이터(웹툰은 원고를 수정을 하지 않는 이상 같은 데이터를 반환한다.)

2. 조회하는데 많은 비용이 드는 데이터

 

[Local Cache와 Global Cache]

 

Local Cache의 특징

1. 서버마다 Cache를 두는 것

2. 서버마다 작동하므로 동작이 빠르다.

3. 다른 서버와의 동기화에 어려움이 있을 수 있다.

 

Global Cache의 특징

1. Cache 서버를 별도로 존재하고, 분산된 서버에서 데이터를 저장할 수 있다. 따라서 Client는 Cache 서버에서 빠른 속도로 조회가 가능하다.

2. 네트워크를 통해 Cache 서버를 동기화하므로 Local Cache에 상대적으로 느리다.

 

Springboot Cache 종류

 

Local-Memory-Cache

1. Local Memory에 Cache 데이터를 저장하고, 조회한다.

2. 서버가 꺼지면 Cache 데이터들은 삭제된다.

3. 기본 전략으로 @EnableCache만 붙여주거나, 간단하게 Custom CacheManager를 등록해서 사용 가능하다.

Redis

1. In-Memory 기반의 키-값 형태를 가지고 있는 NoSQL입니다. In-Memory이므로 빠른 read & write 속도를 가지고 있습니다.

2. Pesistence를 지원한다 -> In-Memory 기반이지만, 서버가 꺼져도 다시 데이터를 불러올 수 있다.  

3. redis 라이브러리와 Custom RedisCacheManager를 등록해서 사용한다.

EnhacedCache

1. 오픈 소스 기반의 Local cache

2. Disk, Memory 저장이 가능하다.

3. 서버 간 분산 캐시를 지원한다. 

4. xml이 필요하다.


앞으로 Local-Memory-Cache와 Redis를 다뤄볼 예정입니다. 감사합니다.