Eseguire la migrazione alla cache di Azure per Redis

Questo articolo descrive diversi approcci per eseguire la migrazione di una cache Redis esistente in esecuzione in locale o in un altro servizio cloud per cache di Azure per Redis.

Scenari di migrazione

Redis open source può essere eseguito in molti ambienti di calcolo. Alcuni esempi comuni sono:

  • Locale: cache Redis in esecuzione in data center privati.
  • Macchine virtuali basate sul cloud: cache Redis in esecuzione in macchine virtuali di Azure, AWS EC2 e così via.
  • Servizi di hosting : servizi Redis gestiti, ad esempio AWS ElastiCache.

Se si dispone di una cache di questo tipo, potrebbe essere possibile spostarla in cache di Azure per Redis con interruzioni minime o tempi di inattività.

Se si vuole passare da un'area di Azure a un'altra, è consigliabile vedere l'articolo Spostare istanze di cache di Azure per Redis in aree diverse.

Opzioni di migrazione

Esistono diversi modi per passare da una cache a un'altra. A seconda della posizione della cache e del modo in cui l'applicazione interagisce con essa, un metodo sarà più utile rispetto agli altri. Di seguito sono riportate alcune delle strategie di migrazione usate di frequente.

Opzione Vantaggi Svantaggi
Creare una nuova cache Più semplice da implementare. È necessario ripopolare i dati nella nuova cache, che potrebbe non funzionare con molte applicazioni.
Esportare e importare dati tramite il file RDB Compatibile con qualsiasi cache Redis in genere. Alcuni dati potrebbero andare persi, se vengono scritti nella cache esistente dopo la generazione del file RDB.
Dati a doppia scrittura in due cache Senza perdita di dati e tempi di inattività Operazioni senza interruzioni della cache esistente. Test più semplice della nuova cache. Richiede due cache per un periodo di tempo prolungato.
Eseguire la migrazione dei dati a livello di codice Controllo completo sulla modalità di spostamento dei dati. Richiede codice personalizzato.

Creare un nuovo cache di Azure per Redis

Questo approccio tecnicamente non è una migrazione. Se la perdita di dati non è un problema, il modo più semplice per passare a cache di Azure per Redis consiste nel creare un'istanza della cache e connetterla all'applicazione. Ad esempio, se si usa Redis come cache look-aside dei record di database, è possibile ricompilare facilmente la cache da zero.

I passaggi generali per implementare questa opzione sono:

  1. Creare una nuova istanza di cache di Azure per Redis.

  2. Aggiornare l'applicazione per usare la nuova istanza.

  3. Eliminare l'istanza di Redis precedente.

Esportare i dati in un file RDB e importarli in cache di Azure per Redis

Redis open source definisce un meccanismo standard per creare uno snapshot del set di dati in memoria di una cache e salvarlo in un file. Questo file, denominato RDB, può essere letto da un'altra cache Redis. cache di Azure per Redis livello Premium supporta l'importazione di dati in un'istanza della cache tramite file RDB. È possibile usare un file RDB per trasferire i dati da una cache esistente a cache di Azure per Redis.

Importante

Il formato di file RDB può cambiare tra le versioni di Redis e potrebbe non mantenere la compatibilità con le versioni precedenti. La versione Redis della cache da cui si esegue l'esportazione deve essere uguale o minore della versione fornita da cache di Azure per Redis.

I passaggi generali per implementare questa opzione sono:

  1. Creare una nuova istanza di cache di Azure per Redis nel livello Premium con le stesse dimensioni della cache esistente o superiore a quella esistente.

  2. Salvare uno snapshot della cache Redis esistente. È possibile configurare Redis per salvare periodicamente gli snapshot oppure eseguire il processo manualmente usando i comandi SAVE o BGSAVE . Il file RDB è denominato "dump.rdb" per impostazione predefinita e si troverà nel percorso specificato nel file di configurazione redis.conf .

    Nota

    Se si esegue la migrazione dei dati all'interno di cache di Azure per Redis, vedere queste istruzioni su come esportare un file RDB o usare invece il cmdlet Di esportazione di PowerShell.

  3. Copiare il file RDB in un account di archiviazione di Azure nell'area in cui si trova la nuova cache. È possibile usare AzCopy per questa attività.

  4. Importare il file RDB nella nuova cache usando queste istruzioni di importazione o il cmdlet di importazione di PowerShell.

  5. Aggiornare l'applicazione per usare la nuova istanza della cache.

Scrivere in due cache Redis contemporaneamente durante il periodo di migrazione

Invece di spostare i dati direttamente tra le cache, è possibile usare l'applicazione per scrivere dati in una cache esistente e in una nuova che si sta configurando. Inizialmente l'applicazione leggerà i dati dalla cache esistente. Quando la nuova cache contiene i dati necessari, si passa l'applicazione a tale cache e si ritira quella precedente. Si supponga, ad esempio, di usare Redis come archivio sessioni e le sessioni dell'applicazione siano valide per sette giorni. Dopo la scrittura nelle due cache per una settimana, la nuova cache contiene tutte le informazioni sulla sessione non scadute. È possibile affidarsi in modo sicuro da questo punto in poi senza preoccuparsi della perdita di dati.

I passaggi generali per implementare questa opzione sono:

  1. Creare una nuova istanza di cache di Azure per Redis nel livello Premium con le stesse dimensioni della cache esistente o superiore a quella esistente.

  2. Modificare il codice dell'applicazione per scrivere nelle istanze nuove e originali.

  3. Continuare a leggere i dati dall'istanza originale fino a quando la nuova istanza non viene sufficientemente popolata con i dati.

  4. Aggiornare il codice dell'applicazione in modo da leggere e scrivere solo dalla nuova istanza.

  5. Eliminare l'istanza originale.

Eseguire la migrazione a livello di codice

È possibile creare un processo di migrazione personalizzato leggendo a livello di codice i dati da una cache esistente e scrivendoli in cache di Azure per Redis. Questo strumento open source può essere usato per copiare dati da un'istanza di cache di Azure per Redis a un'altra. È disponibile anche una versione compilata . È anche possibile trovare il codice sorgente come guida utile per scrivere uno strumento di migrazione personalizzato.

Nota

Questo strumento non è ufficialmente supportato da Microsoft.

I passaggi generali per implementare questa opzione sono:

  1. Creare una macchina virtuale nell'area in cui si trova la cache esistente. Se il set di dati è di grandi dimensioni, scegliere una macchina virtuale relativamente potente per ridurre il tempo di copia.

  2. Creare una nuova istanza di cache di Azure per Redis.

  3. Scaricare i dati dalla nuova cache per assicurarsi che siano vuoti. Questo passaggio è necessario perché lo strumento di copia stesso non sovrascrive alcuna chiave esistente nella cache di destinazione.

    Importante

    Assicurarsi di NON eseguire lo scaricamento dalla cache di origine.

  4. Usare un'applicazione come lo strumento open source precedente per automatizzare la copia dei dati dalla cache di origine alla destinazione. Tenere presente che il processo di copia potrebbe richiedere del tempo per completare a seconda delle dimensioni del set di dati.

Passaggi successivi

Altre informazioni sulle funzionalità di cache di Azure per Redis.