mirror of
https://github.com/ltcptgeneral/cs239-caching.git
synced 2025-04-20 19:57:24 +00:00
prefetch init
This commit is contained in:
parent
854b50ea0b
commit
6234e88265
3
cache.py
3
cache.py
@ -56,7 +56,8 @@ class BaselineCache(Cache):
|
|||||||
evict = True
|
evict = True
|
||||||
|
|
||||||
self.cache[key] = val
|
self.cache[key] = val
|
||||||
self.cache.move_to_end(key)
|
# no need for this since this op appends key-val by default
|
||||||
|
# self.cache.move_to_end(key)
|
||||||
|
|
||||||
return evict
|
return evict
|
||||||
|
|
||||||
|
28
prefetch_cache.py
Normal file
28
prefetch_cache.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
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
|
Loading…
x
Reference in New Issue
Block a user