Prima di iniziare, assicurati che la tua app rispetti le quote di Memorystore for Redis.
Quando utilizzare una cache in memoria
I dati della sessione, le preferenze degli utenti e altri dati restituiti dalle query per le pagine web sono ottimi candidati per la memorizzazione nella cache. In generale, se una query eseguita di frequente restituisce un insieme di risultati che non devono essere visualizzati immediatamente nell'app, puoi memorizzarli nella cache. Le richieste successive possono controllare la cache ed eseguire query sul database solo se i risultati sono assenti o sono scaduti.
Se archivi un valore solo in Memorystore senza eseguirne il backup in archiviazione permanente, assicurati che l'applicazione si comporti in modo accettabile se il valore scade e viene rimosso dalla cache. Ad esempio, se l'improvvisa assenza dei dati delle sessioni di un utente causa il malfunzionamento della sessione, è probabile che questi dati siano archiviati nel database oltre che in Memorystore.
Informazioni sulle autorizzazioni di Memorystore
Ogni interazione con un servizio Google Cloud deve essere autorizzata. Ad esempio, per interagire con un database Redis ospitato da Memorystore, la tua app deve fornire le credenziali di un account autorizzato ad accedere a Memorystore.
Per impostazione predefinita, l'app fornisce le credenziali dell'account di servizio predefinito di App Engine, che è autorizzato ad accedere ai database nello stesso progetto della tua app.
Se una delle seguenti condizioni è vera, devi utilizzare una tecnica di autenticazione alternativa che fornisca esplicitamente le credenziali:
L'app e il database Memorystore si trovano in progetti Google Cloud diversi.
Hai modificato i ruoli assegnati all'account di servizio predefinito di App Engine.
Per informazioni sulle tecniche di autenticazione alternativa, consulta Configurazione dell'autenticazione per applicazioni di produzione da server a server.
Panoramica dell'utilizzo di Memorystore
Per utilizzare Memorystore nella tua app:
Configura Memorystore per Redis, che richiede la creazione di un'istanza Redis su Memorystore e di un accesso VPC serverless che la tua app utilizza per comunicare con l'istanza Redis. L'ordine di creazione di queste due entità indipendenti non è rigoroso e può essere impostato in qualsiasi ordine. Le istruzioni in questa guida mostrano la configurazione iniziale dell'accesso VPC serverless.
Installa una libreria client per Redis e utilizza i comandi Redis per memorizzare i dati nella cache.
Memorystore per Redis è compatibile con qualsiasi libreria client per Redis. Questa guida descrive l'utilizzo della libreria client redigo per inviare comandi Redis dalla tua app.
Configurazione di Memorystore for Redis
Per configurare Memorystore for Redis:
Connetti il tuo App Engine a una rete VPC. L'app può comunicare con Memorystore solo tramite un connettore VPC.
Assicurati di aggiungere le informazioni di connessione VPC al file
app.yaml
come descritto in Configurare l'app tramite il connettore.Prendi nota dell'indirizzo IP e del numero di porta dell'istanza Redis che hai creato. Utilizzerai queste informazioni quando crei un client Redis nel tuo codice.
Crea un'istanza Redis in Memorystore.
Quando ti viene richiesto di selezionare una regione per l'istanza Redis, seleziona la stessa regione in cui si trova l'app App Engine.
Installazione delle dipendenze
Per rendere disponibile la libreria client di aggiornamento alla tua app quando viene eseguita in App Engine, aggiungila alle dipendenze dell'app. Ad esempio, se utilizzi un filego.mod
per dichiarare le dipendenze, aggiungi la seguente riga al file go.mod
:
module github.com/GoogleCloudPlatform/golang-samples/tree/master/memorystore/redis
Scopri di più su come specificare le dipendenze per l'app Go.
Creazione di un client Redis
Per interagire con un database Redis, il tuo codice deve creare un client Redis per gestire la connessione al tuo database Redis. Le seguenti sezioni descrivono la creazione di un client Redis utilizzando la libreria client di Redis.
Specifica delle variabili di ambiente
La libreria client di Redis utilizza due variabili di ambiente per assemblare l'URL per il tuo database Redis:
- Una variabile per identificare l'indirizzo IP del database Redis creato in Memorystore.
- Una variabile per identificare il numero di porta del database Redis creato in Memorystore.
Ti consigliamo di definire queste variabili nel file app.yaml
della tua app, anziché
indicarle direttamente nel codice. Ciò semplifica l'esecuzione dell'app in
ambienti diversi, come un ambiente locale e App Engine.
app.yaml
:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Importazione redigo e creazione del client
Dopo aver definito le variabili di ambienteREDISHOST
e REDISPORT
, utilizza le seguenti righe per importare la libreria di redigo, creare un pool di connessioni e quindi recuperare un client Redis dal pool:
Utilizzo dei comandi Redis per archiviare e recuperare i dati nella cache
Sebbene il database Memorystore Redis supporti la maggior parte dei comandi Redis, devi utilizzare solo pochi comandi per archiviare e recuperare i dati dalla cache. La tabella seguente suggerisce i comandi Redis che puoi utilizzare per memorizzare i dati nella cache. Per sapere come chiamare questi comandi dalla tua app, consulta la documentazione della libreria client.
Attività | Comando Redis |
---|---|
Crea una voce nella cache dei dati e imposta una scadenza per la voce |
SETNX MSETNX |
Recupera i dati dalla cache | GET MGET |
Sostituisci i valori della cache esistenti | IMPOSTA MSET |
Incrementa o riduci i valori numerici della cache | INCR INCRBY DEC. DECRBY |
Elimina le voci dalla cache | CANC SCOLLEGA |
Supporta interazioni simultanee con la cache | Visualizza i dettagli sulle transazioni Redis. |
Test degli aggiornamenti
Quando testi la tua app in locale, valuta la possibilità di eseguire un'istanza locale di Redis per evitare di interagire con i dati di produzione (Memorystore non fornisce un emulatore). Per installare ed eseguire Redis in locale, segui le istruzioni nella documentazione di Redis. Tieni presente che al momento non è possibile eseguire Redis in locale su Windows.
Deployment dell'app
Dopo che l'app viene eseguita nel server di sviluppo locale senza errori:
Se l'app viene eseguita senza errori, utilizza la suddivisione del traffico per accelerare lentamente il traffico per l'app aggiornata. Monitora attentamente l'app per rilevare eventuali problemi del database prima di indirizzare più traffico all'app aggiornata.