LRU Cache

2020년 7월 20일 수정

≡ 목차 (Table of Contents)

LRU Cache

LRU는 Least Recently Used의 약자로 최근에 액세스 했던 값을 캐시로 저장해뒀다 다음 번 읽기 때 빠르게 액세스할 수 있게 제공하려는 캐시 알고리즘이다. 한정된 공간의 캐시에 가급적 최근의 데이터를 유지해서 최근에 사용된 값을 다시 액세스해야 할 때 컴퓨팅 자원을 많이 아낄 수 있다.

세부적으로 보자면 캐시는 큐(Queue)처럼 저장되어 읽기 혹은 쓰기 시 가장 최근의 값을 이용하고 가장 오래된 캐시를 삭제하는 방식으로 구현한다.

Python LRU Cache

Python에는 언어 차원에서 이미 LRU 캐시가 제공되어서 편하게 사용할 수 있다.

from functools import lru_cache

@lru_cache(maxsize=10)
def some_work(query):
    pass

데코레이터라서 원하는 함수에 마음껏 사용할 수 있는 점은 큰 장점 같다.

참고로 lru_cache 의 기본 값은 아래와 같다.

@functools.lru_cache(maxsize=128, typed=False)

maxsizeNone 으로 하면 무한정 커지게 되므로 결국 의미없는 캐시가 되어버리니 조심하자.

typedTrue 가 되면 타입을 구분해서 캐시하게 된다. 보통 함수 호출 시 매개변수는 정해진 타입만 사용하는 경우가 대부분이므로 True 로 할 일은 거의 없을 것 같다.