def set(self, key, value, mark=True): rt.deduct_write(*encode_kv(key, value)) if type(value) == decimal.Decimal or type(value) == float: value = ContractingDecimal(str(value)) self.cache[key] = value if mark: self.pending_writes[key] = value
def get(self, key: str, mark=True): # Try to get from cache v = self.cache.get(key) if v is not None: rt.deduct_read(*encode_kv(key, v)) return v # If it doesn't exist, get from db, add to cache dv = self.driver.get(key) rt.deduct_read(*encode_kv(key, dv)) self.cache[key] = dv # Add key to reads if mark: self.reads.add(key) return dv