cs239-caching/prefetch_cache.py
2025-02-13 13:37:27 -08:00

28 lines
778 B
Python

from cache import BaselineCache
class PrefetchCache(BaselineCache):
key_relations = None
def __init__(self):
super()
self.key_relations = dict()
def put(self, key: str, val: str) -> bool:
# LRU evict
evict = False
if len(self.cache) >= self.limit:
self.cache.popitem(last = False)
evict = True
self.cache[key] = val
self.prefetch(key, val)
return evict
def prefetch(self, key: str, val: str) -> bool:
if len(self.cache) >= self.limit and key in self.key_relations:
self.cache[self.key_relations[key][0]] = self.key_relations[key][1]
return True
return False
def set_relations(self):
return