mirror of
https://github.com/ltcptgeneral/cs239-caching.git
synced 2025-04-04 05:23:26 +00:00
28 lines
778 B
Python
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 |