diskcache 는 말 그대로 disk 에 cache 데이터를 저장시켜주는 라이브러리 입니다.
일반 캐시와 deque 등 다양한 자료구조를 지원합니다.
기본적인 캐시 선언입니다.
from diskcache import Cache
cache = Cache()
다음과 같이 사용할 수 있습니다. 자료를 get/set 하고 만료기한을 설정할 수 있습니다.
cache.pop('alice')
# 1
cache.pop('dave', default='does not exist')
# 'does not exist'
cache.set('dave', 0, expire=None, tag='admin')
# True
result = cache.pop('dave', expire_time=True, tag=True)
value, timestamp, tag = result
value
# 0
print(timestamp)
# None
print(tag)
# admin
데이터베이스를 샤딩하는 fanout cache 도 지원합니다. 샤딩이 되기 때문에 쓰기가 겹칠 확률이 줄어듭니다. (읽기는 동시에 해도 상관 없음) 아래 예시는 샤드를 4개 하고 타임아웃이 1초인 경우입니다.
from diskcache import FanoutCache
cache = FanoutCache(shards=4, timeout=1)
함수 리턴값을 캐시할 수 있습니다.
from diskcache import FanoutCache
cache = FanoutCache()
@cache.memoize(typed=True, expire=1, tag='fib')
def fibonacci(number):
if number == 0:
return 0
elif number == 1:
return 1
else:
return fibonacci(number - 1) + fibonacci(number - 2)
print(sum(fibonacci(value) for value in range(100)))