Utilizzo di memcache

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 scoprire di più su memcache, leggi la Panoramica di Memcache.

Configurazione di memcache

  1. Vai alla pagina Memcache nella console Google Cloud.
    Vai alla pagina Memcache
  2. Seleziona il livello di servizio memcache che vuoi utilizzare:

    • Condivisa (impostazione predefinita): gratuita e fornisce capacità della cache secondo il criterio del "best effort". base.
    • Dedicata: fattura in base ai GB/ora di dimensione della cache e fornisce una tariffa di cache assegnata esclusivamente alla tua applicazione.

    Scopri di più sulle classi di servizio disponibili in 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 una data di scadenza facoltativa:

memcache.add(key="[KEY]", value="[VALUE]", time=[EXPIRATION_TIME])

Ad esempio, per aggiungere il valore raining alla chiave weather_USA_98105 con un scadenza di un'ora dalla scrittura del valore:

memcache.add(key="weather_USA_98105", value="raining", time=3600)

Scopri di più su add() e su altri metodi per impostare i valori in memcache API Python documentazione.

Consulta altri esempi di valori di memorizzazione nella cache in Esempi di Memcache.

Ricerca di 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 nel API Python memcache documentazione.

Monitoraggio di memcache nella console Google Cloud

  1. Vai alla pagina Memcache nella console Google Cloud.
    Vai alla pagina Memcache
  2. Esamina i seguenti report:
    • Livello di servizio Memcache: mostra se la tua applicazione utilizza l'opzione o un livello di servizio 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à dell'elemento meno recente: 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.
  3. 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.
  4. (Solo memcache dedicata) Scorri l'elenco delle Chiavi di accesso rapido.

    • "Tasti rapidi" si tratta di chiavi che ricevono più di 100 query al secondo (QPS) in memcache.
    • Questo elenco include fino a 100 chiavi di scelta rapida, ordinate in base al valore QPS più elevato.

Gestione delle scritture simultanee

a utilizzare la funzionalità di confronto e impostazione per gestire le scritture di più richieste la stessa chiave memcache:

  1. Crea un'istanza di un oggetto Client memcache.
  2. Utilizza un loop di nuovi tentativi (preferibilmente con un limite al numero di nuovi tentativi e utilizzando backoff esponenziale)
    1. Nell'ambito del loop dei nuovi tentativi, recupera la chiave utilizzando gets() o get_multi() con Il parametro for_cas impostato su True.
    2. Nell'ambito del loop di nuovi tentativi, aggiorna il valore della chiave utilizzando cas() oppure cas_multi().

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 loop dei nuovi tentativi è necessario perché senza il loop questo codice non corrisponde evitare le condizioni di gara, si limita a rilevarle! 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 campione è l'impostazione di un limite di di nuovi tentativi, per evitare un loop infinito negli scenari peggiori in cui è molto conteso per lo stesso contatore. Un esempio di quando tale contesa che potrebbe verificarsi è il numero di richieste di aggiornamento del contatore rispetto il servizio memcache è in grado di elaborare in tempo reale.

Scopri di più su come eseguire confronti e impostare in Memcache Panoramica.

Passaggi successivi