1
0
mirror of https://github.com/ltcptgeneral/cs239-caching.git synced 2025-04-01 12:33:25 +00:00

Added ReadAfterWrite

This commit is contained in:
Derek Wang 2025-03-02 19:41:39 -08:00
parent 35ea5a234f
commit 72b72a949f
3 changed files with 28 additions and 0 deletions

20
app/cache/read_after_write_cache.py vendored Normal file

@ -0,0 +1,20 @@
from .cache import BaselineCache
from database import get_user_profile
class ReadAfterWriteCache(BaselineCache):
def __init__(self, limit):
super().__init__( limit )
def invalidate(self, key: str) -> bool:
# basic delete invalidation, but after writing, we immediately read the value and add it to the cache
invalidated = False
if key in self.cache:
del self.cache[key]
invalidated = True
newData = get_user_profile( key )
self.put( key, newData )
return invalidated

@ -0,0 +1,4 @@
cache_strategy: "ReadAfterWrite"
cache_limit: 50
l2_cache_limit: 100 # unused
db_file: "llmData_sns.json" # Change this to the name of any json file within the "database/datastore" folder

@ -6,6 +6,7 @@ from cache.tiered_cache import TieredCache
from cache.eviction_seive import SeiveCache from cache.eviction_seive import SeiveCache
from cache.nocache import NoCache from cache.nocache import NoCache
from cache.idealcache import IdealCache from cache.idealcache import IdealCache
from cache.read_after_write_cache import ReadAfterWriteCache
from config import CACHE_STRATEGY, CACHE_LIMIT, L2_CACHE_LIMIT from config import CACHE_STRATEGY, CACHE_LIMIT, L2_CACHE_LIMIT
import time import time
@ -30,6 +31,9 @@ elif CACHE_STRATEGY == "None":
elif CACHE_STRATEGY == "Ideal": elif CACHE_STRATEGY == "Ideal":
print("Using ideal cache strategy") print("Using ideal cache strategy")
cache = IdealCache(limit=CACHE_LIMIT) cache = IdealCache(limit=CACHE_LIMIT)
elif CACHE_STRATEGY == "ReadAfterWrite":
print("Using read-after-write cache strategy")
cache = ReadAfterWriteCache(limit=CACHE_LIMIT)
else: else:
raise ValueError(f"Invalid CACHE_STRATEGY: {CACHE_STRATEGY}") raise ValueError(f"Invalid CACHE_STRATEGY: {CACHE_STRATEGY}")