Migliori pratiche per Databases for Redis

Prenditi del tempo per esaminare le seguenti procedure consigliate se stai utilizzando Databases for Redis.

Che cos' è Databases for Redis?

Databases for Redis è un servizio OSS gestito di tipo " Redis " offerto su IBM Cloud. Si tratta di un archivio di strutture dati in memoria utilizzato come database, cache, broker di messaggi e motore di flusso. A differenza dei database tradizionali, che archiviano i dati su disco, Redis memorizza i dati in memoria (RAM) consentendo una bassa latenza. I dati sono effimeri, che consente a Databases for Redis di offrire prestazioni elevate e velocità di trasmissione elevata. È anche possibile configurare Redis per memorizzare i dati in modo persistente su disco, sacrificando le prestazioni a favore della disponibilità dei dati, poiché ciò si ottiene abilitando la sincronizzazione AOF (Append Only File) con snapshot RDB.

Le istantanee RDB sono abilitate per il backup e l'alta disponibilità, anche se la persistenza è disabilitata.

Procedure ottimali per la pianificazione della capacità

Devi pianificare la capacità dell'istanza Databases for Redis in base alla tua progettazione dell'applicazione e dell'architettura, comprendere i requisiti hardware e prepararti per l'aumento o la diminuzione della domanda. Le seguenti raccomandazioni possono aiutarti a ottimizzare le dimensioni della tua istanza.

Comprendi i tuoi dati
Si prevede di conoscere i tipi di dati, la dimensione e la durata dei dati. Ciò consente di comprendere la durata dei dati disponibili in memoria prima che vengano eliminati o spostati.
Stima requisiti di memoria
È importante calcolare i requisiti di memoria. Ricordarsi di considerare non solo i dati, ma anche la memoria richiesta per la replica, le connessioni client, i buffer di memoria massima e i metadati Redis.
Comprendere i caricamenti di lettura/scrittura
Identificare i carichi di lettura / scrittura ti aiuta a prepararti per le esigenze di ridimensionamento automatico, il tempo delle tue richieste dell'applicazione e mantenere la sincronizzazione master - follower.
Comprendi le tue esigenze IOPS
Le operazioni di input / output al secondo sono un elemento chiave da considerare nella pianificazione della capacità dell'istanza. Databases for Redis prende periodicamente le istantanee RDB in base alla configurazione Redis predefinita, che impegna il disco anche se la tua istanza è configurata per la cache. È possibile che i database molto occupati superino l'IOPS per la dimensione del disco e l'aumento della dimensione del disco può alleviare un collo di bottiglia delle prestazioni.
Piano per ridondanza e riconnessioni
Ci sono più componenti coinvolti nel calcolo cloud, che possono causare errori momentanei. Tuttavia, in IBM® Cloud Databases, offriamo un'alta disponibilità del 99.99% e ti incoraggiamo a pianificare i blip di connessione nella tua progettazione dell'applicazione utilizzando la logica di riprova e riconnetti.
Considera larghezza di banda di rete
La tua larghezza di banda di rete potrebbe avere un impatto significativo sulle prestazioni di Databases for Redis. Assicurarsi di disporre di una larghezza di banda di rete sufficiente per gestire il carico del database.
Monitoraggio e adeguamenti
Il nostro consiglio è di monitorare le prestazioni e l'utilizzo dell'istanza di Databases for Redis utilizzando IBM Cloud® Monitoring per determinare l'andamento dell'utilizzo dell'istanza del database e ridimensionarla secondo necessità.

Procedure ottimali per le prestazioni

Disabilita persistenza
Per impostazione predefinita, Databases for Redis ha la persistenza abilitata. Ciò scrive la sincronizzazione AOF e aumenta il carico IOPS. Se la tua applicazione non ha bisogno di rendere persistenti i dati, disabilitali utilizzando il comando Set appendonly = no. Per ulteriori informazioni, vedere Impostazione di una cache di esempio.
RAM vs core
Redis è un database in memoria a thread singolo. Intrinsecamente, ha bisogno di più RAM di CORES, a differenza di altri database persistenti. Anche se è a thread singolo, utilizza il 'multiplexing' per elaborare le richieste, ma tutte le richieste vengono elaborate da un thread. Tuttavia, altri core sono necessari per mantenere l'integrità e la stabilità del database per i suoi processi interni. Ti invitiamo a concentrarti maggiormente su RAM e disco (per IOPS) per Databases for Redis. Per ulteriori informazioni, consultare Procedure ottimali per la pianificazione della capacità dell'istanza.
Ridimensionamento della memoria
Ti consigliamo di prestare attenzione quando riduci la memoria della tua istanza Databases for Redis. Poiché Redis è un database in memoria, la sua memoria contiene i dati per scopi di memorizzazione, elaborazione e richiamo. Ridurre drasticamente la memoria può temporaneamente impedire alla tua istanza di restituire un errore, perché non c'è spazio sufficiente per completare le operazioni. Ad esempio, considerare 20 GB di dati che tentano di caricare in 15 GB di memoria, questo caso è associato a restituire un errore.
Evitare comandi costosi
Alcuni comandi in Redis sono costosi da eseguire. Ad esempio, il comando KEYS, che viene utilizzato frequentemente, ma deve essere evitato. Utilizzare invece il comando SCAN, che diffonde l'iterazione su molte chiamate e non vincola l'intero server contemporaneamente.
Scegliere una politica di eliminazione
È necessario scegliere una politica di eliminazione che funzioni per l'applicazione. Per impostazione predefinita, le distribuzione vengono configurate con una politica noeviction. Utilizzare politiche di sfratto come allkeys-lru, volatile-lru, allkeys-random, volatile-random, *, volatile-ttl. Per ulteriori informazioni, vedere Criteri di memoria.
Imposta valori maxmemory
È possibile regolare il valore maxmemory. Tuttavia, impostare un limite ragionevole, altrimenti i dati possono consumare tutta la memoria disponibile e la distribuzione può esaurire le risorse. Per impostazione predefinita, viene impostato sull'80% della memoria disponibile del nodo di dati.
Imposta politiche TTL (Time - To - Live)
TTL è una grande funzione in cui le chiavi vengono eliminate dal database dopo un periodo di tempo definito. Ciò è estremamente utile se si utilizza una cache Redis. Tuttavia, fare attenzione ad impostare un valore molto breve o molto lungo perché un valore molto breve può creare un nuovo calcolo dei valori e un valore molto lungo può creare un utilizzo di memoria non necessario. Per ulteriori informazioni, vedere il comando TTL.

Best practice per l'alta disponibilità

Riprova e riconnetti logica
I sistemi sono soggetti a interruzioni. Si consiglia vivamente di implementare la logica di ripetizione e riconnessione nell'architettura dell'applicazione per evitare interruzioni. Utilizzare IOREDIS, NODEREDIS o qualsiasi altro pacchetto di vostra scelta per garantire la continuità della vostra applicazione.

Per ulteriori informazioni, consultare il post del blog Rilevamento e gestione degli errori con Redis.

Procedure ottimali per il monitoraggio

È necessario monitorare il proprio IBM® Cloud Logs per individuare i seguenti errori comuni e adottare misure correttive:

Migliori pratiche generali

Pool di connessioni
La creazione o la chiusura delle connessioni è costosa. La gestione efficiente delle connessioni è importante e il pool di connessioni è utile per ridurre il sovraccarico associato all'apertura e alla chiusura delle connessioni. Per ulteriori informazioni, vedere il pooling delle connessioni.
Limiti connessioni
Utilizzare le connessioni in maniera efficiente. Sovraccaricare l' Databases for Redis e con troppe connessioni restituirà errori e si verificheranno interruzioni dell'applicazione. Lasciare alcune connessioni disponibili, poiché alcune di esse sono riservate internamente per mantenere lo stato e l'integrità del database. Si consiglia di utilizzare il pool di connessioni. Per ulteriori informazioni, vedere i limiti di connessione.
Timeout di connessione
L'impostazione dei valori di timeout appropriati per le connessioni è importante anche per evitare che le risorse vengano vincolate indefinitamente. Tuttavia, prestare attenzione nell'impostazione di timeout brevi perché ciò può portare a un abbandono della connessione e a un aumento della latenza. Allineare i timeout con le aspettative operative dell'applicazione.
Utilizza la funzione pipeline Redis
La pipeline Redis è una tecnica per migliorare le prestazioni immettendo più comandi contemporaneamente senza attendere la risposta a ogni singolo comando. Per ulteriori informazioni, vedi Redis pipelining.
Utilizzare la funzione Redis Streams
Redis Streams è un tipo di dati che fornisce un'astrazione super veloce in memoria di un log solo accodato.
Suddividi dati di grandi dimensioni
Si consiglia di suddividere dataset di grandi dimensioni in blocchi più piccoli con più chiavi, ossia, suddividere i dati su più chiavi.
Pianificazione batch
Databases for Redis è pianificato per creare backup automatizzati ogni giorno a un'ora pianificata. Durante questo tempo, vengono utilizzati gli IOPS dei tuoi database. Si consiglia di non eseguire i propri lavori batch in questo momento.
Imposta canali di notifica
Ti consigliamo che Databases for Redis configuri gli ID email in IBM Accounts per ricevere aggiornamenti periodici sulle modifiche della versione, sulla fine del ciclo di vita o sulle pianificazioni di manutenzione. Puoi anche monitorare l'icona di notifica dell'account IBM per ricevere questi aggiornamenti.

Per ulteriori informazioni, consultare il post sul blog "Best practices for Redis "(Migliori pratiche per l'implementazione di Active Directory con Active Directory Trust)all'indirizzo IBM Cloud.