*참고 - https://www.youtube.com/watch?v=92NizoBL4uA
-> 대부분 유튜브에 나온 영상을 내가 이해하기 위해 글로 타이핑 한 것이므로 그림과 함께 자세한 내용을 알고자 한다면 유튜브를 보도록 하자.
redis는 전 세계에서 가장 유명한 caching 솔루션이다.
캐시란?
-> 데이터의 원래 소스보다 더 빠르고 효율적으로 액세스 할 수 있는 임시 데이터 저장소다.
대부분의 어플리케이션에서는 속도 향상을 위하여 cache를 사용하고 있다.
캐시가 유용하게 사용되려면 일단 먼저 캐시에 접근하는게 원본에 접근하는 것보다 빨라야 한다.
동일한 데이터에 대해 반복적으로 액세스하는 상황이 많을 때 캐시를 사용하는 것이 좋다.
즉, 데이터의 재사용 횟수가 한번 이상이어야 캐시가 의미있게 된다.
또한 잘 변하지 않는 데이터일수록 캐시를 사용할 때 더 효율적이다.
-> 그러므로 redis는 캐시를 사용하기에 딱 좋은 솔루션이다.
redis를 cache로 사용할 때 어떻게 배치하는가가 시스템의 성능에 큰 영향을 끼치기도 한다.
-> 데이터의 유형과 해당 데이터에 대한 액세스 패턴을 잘 고려해서 선택해야 한다.
레디스를 캐시로쓸 때 가장 일반적으로 사용하는 방법이다.
어플리케이션은 데이터를 찾을 때 캐시에 먼저 확인을 한다. 찾는 데이터가 캐시에 있으면 그것을 가져오는 작업을 반복하면 되지만, 데이터가 없으면 DB에 접근해서 가져와 저장하는 작업을 한다. 따라서 캐시는 찾는 데이터가 없을 때에만 입력되기 떄문에 lazy loading 이라고도 부른다.
cache warminㅡdb에서 쓰는 쓰기전략
DB에만 데이터를 저장한다.
모든 데이터를 저장하고, 캐시 미스가 발생한 경우 캐시 데이터를 끌어오게 된다.
이 경우 캐시 내의 데이터의 db내의 데이터가 다를 수 있다는 단점이 있다.
DB에 데이터를 저장할 때 캐시에도 함께 저장하는 방식이다.
캐시가 항상 최신 정보를 가지고 있다는 장점이 있지만 저장할 때마다 두 단계의 스텝을 거쳐야 하기 때문에 상대적으로 느리다고 볼 수 있다.
또한 저장한 데이터가 재사용되지 않을 수 있는데, 이를 모두 저장해 두는 것은 일종의 리소스 낭비라고 볼 수 있다.
expire time을 설정해 주는 것이 좋다.
-> 몇분 혹은 몇시간만 데이터를 보관하겠다는 의미로 사용하는 것이다.
redis는 자체적으로 많은 자료구조를 제공하고 있다.
이 다음부터는 아직 이해 되지 않아 계속 공부를 해보며 참고 영상을 봐야할 것 같다.