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)
maxsize
를 None
으로 하면 무한정 커지게 되므로 결국 의미없는 캐시가 되어버리니 조심하자.
typed
가 True
가 되면 타입을 구분해서 캐시하게 된다. 보통 함수 호출 시 매개변수는 정해진 타입만 사용하는 경우가 대부분이므로 True
로 할 일은 거의 없을 것 같다.