Questa pagina fornisce esempi di codice Python per l'utilizzo di memcache. Memcache è un sistema distribuito ad alte prestazioni per il caching di oggetti in memoria che fornisce accesso rapido ai dati memorizzati nella cache. Per scoprire di più su memcache, consulta 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 sono in memcache.
- Se i dati sono in memcache, l'applicazione li utilizza.
- Se i dati non sono in memcache, l'applicazione esegue query su Datastore e memorizza i risultati in memcache per le richieste future.
Lo pseudocodice riportato di seguito rappresenta una richiesta memcache tipica:
NDB utilizza internamente memcache per velocizzare le query. Tuttavia, se vuoi, puoi anche aggiungere esplicitamente le chiamate memcache per avere un maggiore controllo sugli incrementi di velocità.
Memorizzazione nella cache dei dati
L'esempio seguente mostra diversi modi per impostare i valori in memcache utilizzando l'API Python.
Per scoprire di più sui metodi add()
, set_multi()
e set()
, consulta la
documentazione dell'API Python memcache.
Modifica di guestbook.py
per utilizzare memcache
L'applicazione Guestbook esegue query su Datastore a ogni richiesta (tramite ndb, quindi sfrutta già alcuni degli acceleramenti di memcache). Puoi modificare l'applicazione Guestbook in modo che utilizzi esplicitamente memcache prima di ricorrere alla query di Datastore.
Innanzitutto importeremo il modulo memcache e creeremo il metodo che controlla memcache prima di eseguire una query.
Successivamente, separeremo la query e la creazione dell'HTML per la pagina. Quando non otteniamo dati dalla cache, chiamiamo questo metodo per eseguire query su Datastore e creare la stringa HTML che memorizzeremo in memcache.
Infine, aggiorneremo l'handler MainPage
per chiamare il metodo get_greetings() e visualizzare alcune statistiche sul numero di volte in cui la cache è stata richiamata o mancata.