Connettere un'app Web nel servizio app di Azure a Cache Redis mediante il protocollo Memcache

Questo articolo illustrerà come connettere un'app Web di WordPress in Servizio app di Azure a Cache Redis di Azure mediante il protocollo Memcache. Se si dispone di un'app Web esistente che usa un server Memcached per l'inserimento nella cache in memoria, è possibile sottoporla a migrazione in Servizio app di Azure e usare la soluzione di memorizzazione nella cache del produttore in Microsoft Azure apportando modifiche minime o addirittura nessuna modifica al codice dell'applicazione. È anche possibile usare la familiarità già acquisita con Memcache per creare app distribuite e con scalabilità elevata in Azure App Service con Cache Redis di Azure per l'inserimento nella cache in memoria, usando framework di applicazioni comuni, ad esempio .NET, PHP, Node.js, Java e Python.

App Web del servizio app di Azure rende possibile questo scenario di applicazione con lo shim Memcache per app Web, ovvero un server locale Memcached che funziona come proxy Memcache per memorizzare nella cache le chiamate a Cache Redis di Azure. In questo modo qualsiasi app può comunicare usando il protocollo Memcache per memorizzare i dati nella cache con Cache Redis. Questo shim Memcache funziona a livello di protocollo, in modo da poter essere usato da qualsiasi applicazione o framework di applicazioni, purché comunichi usando il protocollo Memcache.

Nota

Sebbene in questo articolo si faccia riferimento alle app Web, è applicabile anche ad app per le API e app per dispositivi mobili.

Prerequisiti

Lo shim Memcache per app Web può essere usato con qualsiasi applicazione, purché comunichi tramite il protocollo Memcache. Per questo particolare esempio, l'applicazione di riferimento è un sito WordPress scalabile di cui è possibile eseguire il provisioning da Azure Marketplace.

Seguire la procedura descritta in questi articoli:

Dopo aver distribuito il sito WordPress scalabile e aver eseguito il provisioning di un'istanza di Cache Redis, si è pronti per abilitare lo shim Memcache nelle app Web di Servizio app di Azure.

Abilitare lo shim Memcache per app Web

Per configurare lo shim Memcache, è necessario creare tre impostazioni di app. Questa operazione può essere eseguita usando un'ampia gamma di metodi, tra cui il portale di Azure, il portale classico, i cmdlet di Azure PowerShell o l'interfaccia della riga di comando di Azure. Ai fini di questo post, per configurare le impostazioni dell'app verrà usato il portale di Azure. I seguenti valori possono essere recuperati dal pannello Impostazioni dell'istanza di Cache Redis.

Pannello Impostazioni di Cache Redis di Azure

Aggiungere l'impostazione di app REDIS_HOST

La prima impostazione di app che è necessario creare è REDIS_HOST. Questa impostazione definisce la destinazione a cui lo shim inoltra le informazioni della cache. Il valore richiesto per l'impostazione di app REDIS_HOST può essere recuperato dal pannello Proprietà dell'istanza di Cache Redis.

Nome host di Cache Redis di Azure

Impostare la chiave dell'impostazione di app su REDIS_HOST e il valore dell'impostazione di app sul nome host dell'istanza di Cache Redis.

Impostazione REDIS_HOST per app Web

Aggiungere l'impostazione di app REDIS_KEY

La seconda impostazione di app che è necessario creare è REDIS_KEY. Questa impostazione fornisce il token di autenticazione necessario per accedere in modo sicuro all'istanza di Cache Redis. È possibile recuperare il valore richiesto per l'impostazione di app REDIS_KEY dal pannello Chiavi di accesso dell'istanza di Cache Redis.

Chiave primaria di Cache Redis di Azure

Impostare la chiave dell'impostazione di app su REDIS_KEY e il valore dell'impostazione di app sulla chiave primaria dell'istanza di Cache Redis.

Impostazione REDIS_KEY per siti Web di Azure

Aggiungere l'impostazione di app MEMCACHESHIM_REDIS_ENABLE

L'ultima impostazione di app viene usata per abilitare lo shim Memcache in app Web che usano REDIS_HOST e REDIS_KEY per la connessione a Cache Redis di Azure e per l'inoltro delle chiamate alla cache. Impostare la chiave dell'impostazione di app su MEMCACHESHIM_REDIS_ENABLE e il valore su true.

Impostazione MEMCACHESHIM_REDIS_ENABLE per app Web

Dopo aver aggiunto le tre (3) impostazioni di app, fare clic su Salva.

Abilitare l'estensione Memcache per PHP

Affinché l'applicazione supporti il protocollo Memcache, è necessario installare l'estensione Memcache per PHP, il framework del linguaggio per il sito WordPress.

Scaricare l'estensione php_memcache

Passare a PECL. Nella categoria di memorizzazione nella cache fare clic su memcache. Nella colonna dei download fare clic sul collegamento relativo alle DLL.

Sito Web di PHP PECL

Scaricare il link Non-Thread Safe (NTS) x86 per la versione di PHP abilitata nelle app Web (il valore predefinito è PHP 5.4).

Pacchetto Memcache sul sito Web di PHP PECL

Abilitare l'estensione php_memcache

Dopo il download del file, decomprimerlo e caricare il file php_memcache.dll nella directory d:\home\site\wwwroot\bin\ext\. Dopo il caricamento del file php_memcache.dll nell'app Web, è necessario abilitare l'estensione nel runtime PHP. Per abilitare l'estensione Memcache nel portale di Azure, aprire il pannello Impostazioni applicazione per l'App Web e quindi aggiungere una nuova impostazione di app con chiave PHP_EXTENSIONS e valore bin\ext\php_memcache.dll.

Nota

Se l'app Web deve caricare più estensioni PHP, il valore di PHP_EXTENSIONS deve essere un elenco di percorsi relativi di file DLL delimitati da virgole.

Impostazione PHP_EXTENSIONS per app Web

Al termine, fare clic su Salva.

Installare il plug-in Memcache WordPress

Nota

È anche possibile scaricare il plug-in Memcached Object Cache da WordPress.org.

Nella pagina dei plug-in di WordPress fare clic su Aggiungi nuovo.

Pagina del plug-in WordPress

Nella casella di ricerca digitare memcached e premere Invio.

Aggiungere il nuovo plug-in WordPress

Trovare Memcached Object Cache nell'elenco e quindi fare clic su Install Now (Installa ora).

Installare il plug-in Memcache WordPress

Abilitare il plug-in Memcache WordPress

Nota

Seguire le istruzioni in questo blog su come abilitare un'estensione del sito nelle app Web per installare Visual Studio Team Services.

Nel file wp-config.php aggiungere il seguente frammento di codice al di sopra del commento di arresto della modifica verso la fine del file.

$memcached_servers = array(
    'default' => array('localhost:' . getenv("MEMCACHESHIM_PORT"))
);

Dopo che il frammento di codice è stato incollato, il documento verrà salvato automaticamente.

Il passaggio successivo consiste nell'abilitare il plug-in della cache di oggetti. Questa operazione viene eseguita trascinando object-cache.php dalla cartella wp-content/plugins/memcached alla cartella wp-content per abilitare la funzionalità Memcached Object Cache.

Individuare il plug-in object-cache.php di memcache

Ora che il file object-cache.php si trova nella cartella wp-content, la funzionalità Memcached Object Cache è abilitata.

Abilitare il plug-in object-cache.php di memcache

Verificare il corretto funzionamento del plug-in della cache di oggetti Memcached

Tutti i passaggi per abilitare lo shim Memcache per app Web sono stati completati. Resta solo da verificare che i dati popolino l'istanza di Cache Redis.

Abilitare il supporto della porta non SSL in Cache Redis di Azure

Nota

Alla data in cui viene scritto questo articolo, l'interfaccia della riga di comando Redis non supporta la connettività SSL e pertanto sono necessarie le operazioni seguenti.

Nel portale di Azure passare all'istanza di Cache Redis creata per questa app Web. Dopo aver aperto il pannello della cache, fare clic sull'icona Impostazioni .

Pulsante Impostazioni di Cache Redis di Azure

Selezionare Porte di accesso dall'elenco.

Porta di accesso di Cache Redis di Azure

Fare clic su No per Consenti l'accesso solo tramite SSL.

Porta di accesso solo SSL di Cache Redis di Azure

La porta non SSL ora risulta impostata. Fare clic su Salva.

Portale di accesso non SSL di Cache Redis di Azure

Connettersi a Cache Redis di Azure da redis-cli

Nota

In questo passaggio si presuppone che Redis sia installato in locale nel computer di sviluppo. Installare Redis in locale seguendo queste istruzioni.

Aprire la console della riga di comando desiderata e digitare il seguente comando:

redis-cli –h <hostname-for-redis-cache> –a <primary-key-for-redis-cache> –p 6379

Sostituire <hostname-for-redis-cache> con il nome host effettivo xxxxx.redis.cache.windows.net e <primary-key-for-redis-cache> con la chiave di accesso della cache, quindi premere INVIO. Dopo che l'interfaccia della riga di comando si è connessa all'istanza di Cache Redis, inviare un comando Redis. Nella seguente schermata si è scelto di elencare le chiavi.

Connettersi a Cache Redis di Azure dall'interfaccia della riga di comando di Redis in Terminal

La chiamata per elencare le chiavi deve restituire un valore. In caso contrario, provare a passare all'app web e ripetere l'operazione.

Conclusioni

Congratulazioni. L'app di WordPress dispone ora di una cache in memoria centralizzata per garantire una velocità effettiva maggiore. Tenere presente che lo shim Memcache per app Web può essere usato con qualsiasi client Memcache, indipendentemente dal linguaggio di programmazione o dal framework di applicazioni. Pubblicare eventuali commenti o domande sullo shim Memcache per app Web sui forum MSDN o su Stackoverflow.

Nota

Per iniziare a usare Servizio app di Azure prima di registrarsi per ottenere un account Azure, andare a Prova il servizio app, dove è possibile creare un'app Web iniziale temporanea nel servizio app. Non è necessario fornire una carta di credito né impegnarsi in alcun modo.

Modifiche apportate