Esempi di Memcache

Questa pagina fornisce esempi di codice in Codice Python per l'utilizzo di Memcache. Memcache è un sistema distribuito ad alte prestazioni per il caching di oggetti in memoria che fornisce rapido accesso ai dati memorizzati nella cache. Per scoprire di più su Memcache, leggi la panoramica di Memcache.

Il pattern memcache

Memcache viene in genere utilizzato con il seguente pattern:

  • L'applicazione riceve una query dall'utente o dall'applicazione.
  • L'applicazione verifica se i dati necessari per soddisfare la query si trovano nella memcache.
    • Se i dati si trovano in memcache, l'applicazione li utilizza.
    • Se i dati non sono in memcache, l'applicazione esegue una query sul datastore e memorizza i risultati in memcache per le richieste future.

Lo pseudocodice riportato di seguito rappresenta una tipica richiesta memcache:

def get_data():
    data = memcache.get('key')
    if data is not None:
        return data
    else:
        data = query_for_data()
        memcache.add('key', data, 60)
    return data

ndb utilizza internamente memcache per velocizzare le query. Tuttavia, se vuoi, puoi anche aggiungere esplicitamente chiamate memcache per avere un maggiore controllo sugli aumenti di velocità.

Memorizzazione dei dati nella cache

L'esempio seguente mostra diversi modi per impostare i valori in memcache utilizzando l'API Python.

# Add a value if it doesn't exist in the cache
# with a cache expiration of 1 hour.
memcache.add(key="weather_USA_98105", value="raining", time=3600)

# Set several values, overwriting any existing values for these keys.
memcache.set_multi(
    {"USA_98115": "cloudy", "USA_94105": "foggy", "USA_94043": "sunny"},
    key_prefix="weather_",
    time=3600
)

# Atomically increment an integer value.
memcache.set(key="counter", value=0)
memcache.incr("counter")
memcache.incr("counter")
memcache.incr("counter")

Per saperne di più sui metodi add(), set_multi() e set(), consulta la documentazione dell'API Python memcache.