Prima di iniziare, assicurati che la tua app rispetti le quote di Memorystore for Redis.
Quando utilizzare una cache della memoria
I dati delle sessioni, le preferenze utente e altri dati restituiti dalle query per le pagine web sono buoni 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 nella tua app, puoi memorizzare nella cache i risultati. Le richieste successive possono controllare la cache ed eseguire query sul database solo se i risultati non sono presenti o sono scaduti.
Se memorizzi un valore solo in Memorystore senza eseguirne il backup nello spazio di archiviazione permanente, assicurati che l'applicazione si comporti in modo accettabile se il valore scade e viene rimosso dalla cache. Ad esempio, se l'assenza improvvisa degli dati di sessione di un utente causa il malfunzionamento della sessione, questi dati dovrebbero probabilmente essere archiviati nel database oltre che in Memorystore.
Informazioni sulle autorizzazioni di Memorystore
Ogni interazione con un Google Cloud servizio deve essere autorizzata. Per 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 dell'app.
Se una delle seguenti condizioni è vera, devi utilizzare una tecnica di autenticazione alternativa che fornisca esplicitamente le credenziali:
La tua app e il database Memorystore si trovano in progettiGoogle Cloud diversi.
Hai modificato i ruoli assegnati all'account di servizio App Engine predefinito.
Per informazioni sulle tecniche di autenticazione alternativa, consulta Configurare l'autenticazione per le applicazioni di produzione da server a server.
Panoramica dell'utilizzo di Memorystore
Per utilizzare Memorystore nella tua app:
Configura Memorystore for Redis, che richiede di creare un'istanza Redis su Memorystore e un accesso VPC serverless utilizzato dall'app per comunicare con l'istanza Redis. L'ordine di creazione di queste due entità indipendenti non è rigoroso e può essere configurato in qualsiasi ordine. Le istruzioni riportate in questa guida illustrano innanzitutto la configurazione di Accesso VPC serverless.
Installa una libreria client per Redis e utilizza i comandi Redis per memorizzare nella cache i dati.
Memorystore for Redis è compatibile con qualsiasi libreria client per Redis. Questa guida descrive l'utilizzo della libreria client Jedis per inviare comandi Redis dalla tua app. Per informazioni dettagliate sull'utilizzo di Jedis, consulta la wiki di Jedis.
Configurazione di Memorystore for Redis
Per configurare Memorystore for Redis:
Connetti 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'utilizzo del connettore da parte dell'app.Prendi nota dell'indirizzo IP e del numero di porta dell'istanza Redis creata. Utilizzerai queste informazioni quando crei un client Redis nel codice.
Crea un'istanza Redis in Memorystore.
Quando ti viene chiesto di selezionare una regione per l'istanza Redis, seleziona la stessa regione in cui si trova la tua app App Engine.
Installazione delle dipendenze
Per rendere disponibile la libreria client Jedis alla tua app quando viene eseguita in App Engine, aggiungila alle dipendenze dell'app. Ad esempio, se utilizzi Maven, aggiungi la seguente dipendenza al filepom.xml
:
Creazione di un client Redis
Per interagire con un database Redis, il codice deve creare un client Redis per gestire la connessione al database Redis. Le sezioni che seguono descrivono la creazione di un client Redis utilizzando la libreria client Jedis.
Specifica delle variabili di ambiente
La libreria client Jedis utilizza due variabili di ambiente per assemblare l'URL del 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 che hai creato in Memorystore.
Ti consigliamo di definire queste variabili nel file app.yaml
dell'app anziché
direttamente nel codice. In questo modo è più facile eseguire l'app in diversi ambienti, ad esempio in un ambiente locale e in App Engine.
app.yaml
:
env_variables:
redis.host: '10.112.12.112'
redis.port: '6379'
Importazione di Jedis e creazione del client
Quando utilizzi la libreria Jedis, ti consigliamo di creare un JedisPool e poi di utilizzare il pool per creare un client. Le seguenti righe di codice utilizzano le variabili di ambienteredis.host
e redis.port
che hai definito in precedenza per creare un pool:
Per creare un client dal pool, utilizza il metodo JedisPool.getResource()
.
Ad esempio:
Utilizzo dei comandi Redis per archiviare e recuperare i dati nella cache
Anche se il database Redis di Memorystore supporta la maggior parte dei comandi Redis, devi utilizzare solo alcuni comandi per memorizzare e recuperare i dati dalla cache. La tabella seguente suggerisce i comandi Redis che puoi utilizzare per memorizzare nella cache i dati. Per scoprire come chiamare questi comandi dalla tua app, consulta la documentazione della libreria client.
Attività | Comando Redis |
---|---|
Crea una voce nella cache di dati e imposta una data e un'ora di scadenza per la voce |
SETNX MSETNX |
Recuperare i dati dalla cache | GET MGET |
Sostituire i valori della cache esistenti | SET MSET |
Aumentare o diminuire i valori numerici della cache | INCR INCRBY DECR DECRBY |
Eliminare le voci dalla cache | DEL SCOLLEGA |
Supportare le interazioni simultanee con la cache | Visualizza i dettagli sulle transazioni Redis. |
Testare gli aggiornamenti
Quando testi l'app localmente, ti consigliamo 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 localmente, segui le istruzioni riportate nella documentazione di Redis. Tieni presente che al momento non è possibile eseguire Redis localmente su Windows.
Eseguire il deployment dell'app
Una volta che l'app è in esecuzione nel server di sviluppo locale senza errori:
Se l'app funziona senza errori, utilizza la suddivisione del traffico per aumentare gradualmente il traffico per l'app aggiornata. Monitora attentamente l'app per rilevare eventuali problemi di database prima di indirizzare più traffico all'app aggiornata.