In questa pagina viene descritto come configurare e monitorare il servizio memcache per utilizzando la console Google Cloud. Descrive inoltre come utilizzare Python memcache di App Engine. per impostare e recuperare i valori memorizzati nella cache e utilizzare la funzionalità di confronto e impostazione per gestire richieste di scrittura simultanee nella stessa memcache chiave. Per saperne di più su memcache, consulta la panoramica di Memcache.
Configurazione di memcache
- Vai alla pagina Memcache nella console Google Cloud.
Vai alla pagina Memcache Seleziona il livello di servizio memcache che vuoi utilizzare:
- Condivisa (impostazione predefinita): gratuita e fornisce capacità della cache su una base di "best effort".
- Dedicata: viene fatturata in base ai GB/ora di dimensioni della cache e offre una capacità della cache fissa assegnata esclusivamente alla tua applicazione.
Scopri di più sulle classi di servizio disponibili nella Panoramica di Memcache.
Memorizzazione nella cache e recupero dei valori
Memorizzazione di un valore nella cache
Utilizza add()
per aggiungere il valore di una chiave se e solo se non esiste già, con un valore facoltativo della data di scadenza:
memcache.add(key="[KEY]", value="[VALUE]", time=[EXPIRATION_TIME])
Ad esempio, per aggiungere il valore raining
alla chiave weather_USA_98105
con un
tempo di scadenza di un'ora dal momento in cui viene scritto il valore:
memcache.add(key="weather_USA_98105", value="raining", time=3600)
Scopri di più su add()
e su altri metodi per impostare i valori nella documentazione dell'API Python di memcache.
Consulta altri esempi di valori di memorizzazione nella cache in Esempi di Memcache.
Ricerca dei valori memorizzati nella cache
Utilizza get()
per cercare il valore di una singola chiave:
memcache.get(key="[KEY]")
Ad esempio, per ottenere il valore della chiave weather_USA_98105
:
memcache.get(key="weather_USA_98105")
Scopri di più su get()
e su altri metodi per cercare i valori nella
documentazione dell'API Python memcache.
Monitoraggio di memcache nella console Google Cloud
- Vai alla pagina Memcache nella console Google Cloud.
Vai alla pagina Memcache - Esamina i seguenti report:
- Livello di servizio memcache: indica se la tua applicazione utilizza il livello di servizio condiviso o dedicato. Se sei un proprietario del progetto, puoi passare da un progetto all'altro. Impara Scopri di più sui livelli di servizio.
- Percentuale di hit: mostra la percentuale di richieste di dati pubblicate da dalla cache, oltre al numero non elaborato di richieste di dati gestite dalla cache.
- Elementi nella cache.
- Età elemento più vecchio: l'età dell'elemento meno recente memorizzato nella cache. Tieni presente che l'età di un elemento viene reimpostato ogni volta che viene utilizzato, letto o scritto.
- Dimensioni totali cache.
Puoi eseguire una delle seguenti azioni:
- Nuova chiave: aggiungi una nuova chiave alla cache.
- Trova una chiave: recupera una chiave esistente.
- Svuota la cache: rimuovi tutte le coppie chiave-valore dalla cache.
(Solo memcache dedicata) Consulta l'elenco delle Chiavi calde.
- Le "Chiavi calde" sono chiavi che ricevono più di 100 query al secondo (QPS) nel memcache.
- Questo elenco include fino a 100 tasti di scelta rapida, ordinati in base alla QPS più alta.
Gestione delle scritture simultanee
Per utilizzare la funzionalità di confronto e impostazione per gestire le scritture da più richieste alla stessa chiave memcache:
- Crea un'istanza di un oggetto
Client
memcache. - Utilizza un loop di nuovi tentativi (preferibilmente con un limite al numero di nuovi tentativi e utilizzando
backoff esponenziale)
- All'interno del loop di ripetizione, recupera la chiave utilizzando
gets()
oget_multi()
con il parametrofor_cas
impostato suTrue
. - All'interno del loop di ripetizione, aggiorna il valore della chiave utilizzando
cas()
ocas_multi()
.
- All'interno del loop di ripetizione, recupera la chiave utilizzando
Il seguente snippet mostra un modo per utilizzare la funzionalità di confronto e impostazione:
def bump_counter(key):
client = memcache.Client()
while True: # Retry loop
counter = client.gets(key)
if counter is None: raise KeyError('Uninitialized counter')
if client.cas(key, counter+1):
break
Il ciclo di ripetizione è necessario perché senza il ciclo questo codice non evita effettivamente le condizioni di gara, ma le rileva. Il servizio memcache garantisce
che, se utilizzato nel pattern mostrato qui (ovvero utilizzando gets()
e cas()
),
se due (o più) istanze client diverse vengono coinvolte in una gara
, solo la prima che esegue l'operazione cas()
riesce (return
True
), mentre la seconda (e le successive) non va a buon fine (restituisce False
).
Un altro perfezionamento da aggiungere a questo codice di esempio è impostare un limite sul numero di tentativi, per evitare un ciclo infinito negli scenari peggiori in cui esiste molta contesa per lo stesso contatore. Un esempio di quando tale contesa che potrebbe verificarsi è se ci sono più richieste di aggiornamento del contatore rispetto il servizio memcache è in grado di elaborare in tempo reale.
Scopri di più su confronta e imposta nella Panoramica di Memcache.
Passaggi successivi
- Scopri di più su memcache nella panoramica di Memcache.
- Consulta gli esempi di codice per l'utilizzo di memcache in Python in Esempi di memcache.