Le applicazioni web scalabili ad alte prestazioni spesso utilizzano di archiviazione permanente i dati della cache davanti o al posto di una solida archiviazione permanente per alcune attività. Ti consigliamo di utilizzare Memorystore for Redis come servizio di memorizzazione nella cache. Nota che Memorystore for Redis non offre un livello gratuito. Per maggiori dettagli, vedi Prezzi di Memorystore.
Prima di iniziare, assicurati che l'app rimanga all'interno Quote di Memorystore for Redis
Quando utilizzare una cache in memoria
Dati di sessione, 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 necessariamente essere visualizzati nell'app, puoi memorizzare nella cache i risultati. Le richieste successive possono controllare la cache ed eseguire query solo se i risultati non sono presenti o sono scaduti.
Se archivi un valore solo in Memorystore senza eseguirne il backup in di archiviazione permanente, assicurati che l'applicazione si comporti in modo accettabile se scade e viene rimosso dalla cache. Ad esempio, se l'assenza improvvisa dei dati della sessione di un utente causa un malfunzionamento della sessione, tali dati dovrebbe essere archiviato nel database oltre che in Memorystore.
Informazioni sulle autorizzazioni di Memorystore
Ogni interazione con un servizio Google Cloud deve essere autorizzata. Per Ad esempio, per interagire con un database Redis ospitato da Memorystore, la tua app deve fornire le credenziali di un account autorizzato ad accedere Memorystore.
Per impostazione predefinita, l'app fornisce le credenziali di App Engine account di servizio predefinito, che è autorizzato a accedere ai database nello stesso progetto della tua app.
Se una delle seguenti condizioni è vera, devi usare un'alternativa tecnica di autenticazione che fornisce esplicitamente le credenziali:
La tua app e il database Memorystore si trovano in diversi progetti Google Cloud.
Hai modificato i ruoli assegnati all'App Engine predefinito l'account di servizio.
Per informazioni sulle tecniche di autenticazione alternative, vedi Impostazione dell'autenticazione per la produzione da server a server Applicazioni.
Panoramica dell'utilizzo di Memorystore
Per utilizzare Memorystore nella tua app:
Configurare Memorystore for Redis per creare un'istanza Redis su Memorystore e creare un'istanza Accesso VPC serverless utilizzato dalla tua app per comunicare con Redis.
Installa una libreria client per Redis e utilizza i comandi Redis per memorizzare i dati nella cache.
Memorystore for Redis è compatibile con qualsiasi libreria client per Redis.
Vai
Questa guida descrive l'utilizzo dei redigo libreria client per inviare comandi Redis dalla tua app.
Java
Questa guida descrive l'utilizzo dei Giorgia libreria client per inviare comandi Redis dalla tua app. Per maggiori dettagli su gli Jedi, vedi Wiki Jedi.
Node.js
Questa guida descrive l'utilizzo dei node_redis libreria client per inviare comandi Redis dalla tua app.
PHP
Questa guida descrive l'utilizzo dei PHPRedis libreria client per inviare comandi Redis dalla tua app.
Python
Questa guida descrive l'utilizzo dei redis-py 3.0 libreria client per inviare comandi Redis dalla tua app.
Ruby
Questa guida descrive l'utilizzo dei redis-rb libreria client per inviare comandi Redis dalla tua app.
Configurazione di Memorystore for Redis
Per configurare Memorystore for Redis:
Crea un'istanza Redis in Memorystore.
Quando ti viene richiesto di selezionare una regione per l'istanza Redis, seleziona stessa regione in cui si trova l'app di App Engine.
Prendi nota dell'indirizzo IP e del numero di porta dell'istanza Redis che crei. Utilizzerai queste informazioni durante la creazione di un client Redis nel codice.
Connetti App Engine a una rete VPC. La tua 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 con il connettore.
Installazione delle dipendenze
Vai
Per rendere disponibile la libreria client Redigo per la tua app quando
che viene eseguito in App Engine, aggiungi la libreria alle dipendenze dell'app. Per
Ad esempio, se utilizzi un file go.mod
per dichiarare le dipendenze, aggiungi quanto segue
riga al tuo file go.mod
:
modulo github.com/GoogleCloudPlatform/golang-samples/tree/master/memorystore/redis
Scopri di più su come specificare le dipendenze per la tua app Go.
Java
Rendere la libreria client Jedis disponibile per la tua app durante l'esecuzione
in App Engine, aggiungi la libreria alle dipendenze dell'app. Ad esempio:
Se utilizzi Maven, aggiungi la seguente dipendenza nel file pom.xml
:
Node.js
Per rendere disponibile la libreria client node_redis per la tua app durante l'esecuzione
in App Engine, aggiungi la libreria al file package.json
dell'app.
Ad esempio:
Scopri di più su come specificare le dipendenze per l'app Node.js.
PHP
Per rendere disponibile la libreria client PHPRedis nella tua app durante l'esecuzione
in App Engine, aggiungi l'estensione redis.so
al file php.ini
dell'app.
Ad esempio:
Per ulteriori informazioni sull'attivazione delle estensioni PHP in App Engine, vedi Caricabili dinamicamente .
Python
Rendere la libreria client Redis disponibile per la tua app durante l'esecuzione
in App Engine, aggiungi la riga seguente all'interfaccia
File requirements.txt
:
redis
Il runtime Python 3 di App Engine caricherà automaticamente tutte le librerie
il file requirements.txt
dell'app quando
eseguire il deployment dell'app.
Per lo sviluppo locale, ti consigliamo di installare le dipendenze in un ambiente come venv.
Ruby
Per rendere disponibile la libreria client Redis-rb alla tua app durante l'esecuzione
in App Engine, aggiungi la libreria al file Gemfile
dell'app.
source "https://cloud.google.com/memorystore"
gem "redis-rb"
Creazione di un client Redis
Per interagire con un database Redis, il codice deve creare un client Redis per e gestire la connessione al tuo database Redis. Le seguenti sezioni descrivono creando un client Redis utilizzando la libreria client Redis.
Specifica le variabili di ambiente
La libreria client 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 che hai 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é nel file
definendoli direttamente nel codice. In questo modo, è più facile eseguire l'app
diversi, come un ambiente locale e App Engine. Scopri di più sulle variabili di ambiente nella pagina di riferimento di app.yaml
.
Vai
Ad esempio, aggiungi le seguenti righe al file app.yaml
:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Java
Ad esempio, aggiungi le seguenti righe al file app.yaml
:
env_variables:
redis.host: '10.112.12.112'
redis.port: '6379'
Node.js
Ad esempio, aggiungi le seguenti righe al file app.yaml
:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
PHP
Ad esempio, aggiungi le seguenti righe al file app.yaml
:
env_variables:
REDIS_HOST: '10.112.12.112'
REDIS_PORT: '6379'
Python
Ad esempio, aggiungi le seguenti righe al file app.yaml
:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Ruby
Ad esempio, aggiungi le seguenti righe al file app.yaml
:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Importazione di Redis e creazione del client in corso...
Vai
Dopo aver definito le variabili di ambiente REDISHOST
e REDISPORT
,
utilizza le righe seguenti per importare la libreria Redigo, creare un pool di connessioni
e quindi recupera un client Redis dal pool:
Java
Quando utilizzi la raccolta Jedis, ti consigliamo di creare un
JedisPool, quindi utilizzare il pool per creare un client.
Le seguenti righe di codice utilizzano gli ambienti redis.host
e redis.port
variabili definite in precedenza per creare un pool:
Per creare un client dal pool, utilizza il metodo JedisPool.getResource()
.
Ad esempio:
Node.js
Dopo aver definito le variabili di ambiente REDISHOST
e REDISPORT
,
puoi utilizzare le righe seguenti per importare la libreria node_redis e
crea un client Redis:
PHP
Dopo aver definito le variabili di ambiente REDIS_HOST
e REDIS_PORT
,
puoi utilizzare le righe seguenti per creare un client Redis:
Python
Dopo aver definito le variabili di ambiente REDISHOST
e REDISPORT
,
utilizza le seguenti righe per importare la libreria Redis
crea un client:
import redis
redis_host = os.environ.get('REDISHOST', 'localhost')
redis_port = int(os.environ.get('REDISPORT', 6379))
redis_client = redis.Redis(host=redis_host, port=redis_port)
Se hai utilizzato una versione precedente di Redis-py per altre app, potresti aver usato
la classe StrictClient
anziché Client
. Tuttavia, Redis-py ora
consiglia Client
anziché StrictClient
.
Ruby
Nessuna informazione aggiuntiva per questo runtime.
Utilizzo dei comandi Redis per archiviare e recuperare i dati nella cache
Sebbene il database Memorystore Redis supporti la maggior parte i comandi Redis, ti basta usare pochi comandi archiviare e recuperare i dati dalla cache. La tabella seguente suggerisce Redis che puoi utilizzare per memorizzare i dati nella cache. Per scoprire come chiamare questi comandi dal tuo visualizza 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 | SCARICA MGET |
Sostituisci i valori della cache esistenti | IMPOSTA MSET |
Aumentare o diminuire i valori numerici della cache | INCR INCRBY DECR DECRBY |
Eliminare le voci dalla cache | DEL UNLINK |
Supporto di interazioni simultanee con la cache | Consulta i dettagli sulle transazioni Redis.
Per Python, la libreria client Redis-py richiede tutte le transazioni avvengono pipeline. |
Test degli aggiornamenti in corso...
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 fornire un emulatore). Per installare ed eseguire Redis in locale, segui le istruzioni in Documentazione Redis. Tieni presente che attualmente non è possibile eseguire Redis in locale su Windows.
Per ulteriori informazioni sui test delle app, vedi Test e deployment dell'applicazione.
Deployment dell'app
Quando l'app è in esecuzione nel server di sviluppo locale senza errori:
Se l'app viene eseguita senza errori, utilizzare la suddivisione del traffico per rallentare aumentare il traffico per la tua app aggiornata. Monitora attentamente l'app per individuare problemi di database prima di indirizzare una maggiore quantità di traffico all'app aggiornata.