Vai al contenuto principale
🔒 Modalità anteprima. Le prime quindici lezioni di Foundations sono gratuite; questa è Pro. Avvia un trial di 7 giorni per sbloccare l'editor, i suggerimenti AI e il resto del programma. Carta richiesta, disdici in qualsiasi momento dalla Dashboard.Avvia trial di 7 giorni →
← CorsiSystem Design for Python JuniorsModulo 1 · Fondamenti di progettazione del sistemaCaching: quando, dove, cosapredict5 / 105
+100 XP
Compito
📝 **Compito:** Prevedere la traccia di 7 righe prodotta da quattro letture del catalogo prodotti rispetto a un livello cache-aside (ogni errore stampa `miss` quindi `db`; un successo stampa solo `hit`). Un invalidamento al centro ripristina l'immagine. 📋 Implementa la funzione sopra. I test vengono eseguiti automaticamente. 💡 **Suggerimento:** Rileggi la teoria se rimani bloccato.
Predici output

Leggi il codice attentamente

class CacheAside:
    def __init__(self, db):
        self.cache = {}
        self.db = db
        self.log = []

    def read(self, key):
        if key in self.cache:
            self.log.append("hit")
            return self.cache[key]
        self.log.append("miss")
        # Fall back to DB.
        value = self.db[key]
        self.log.append("db")
        self.cache[key] = value
        return value

    def invalidate(self, key):
        self.cache.pop(key, None)

DB = {"product:1": "Widget", "product:2": "Gadget"}
c = CacheAside(DB)

c.read("product:1")    # first read — cold cache
c.read("product:1")    # second read — should hit
c.read("product:2")    # different key — cold
c.invalidate("product:1")
c.read("product:1")    # invalidated — back to db

print("\n".join(c.log))

# What does this print? Type your prediction.

Cosa stamperà il programma? Scrivi qui:

💬 Discussione

Sii il primo a fare una domanda o condividere un consiglio.
Accedi per partecipare alla discussione. La lettura è gratuita.
Caricamento discussione…