Come Risolvere i Problemi in Redis

Introduzione

Redis è un data store open-source basato su chiave-valore in memoria. Viene fornito con diversi comandi che possono aiutare nella risoluzione dei problemi e nel debugging. A causa della natura di Redis come un data store basato su chiave-valore in memoria, molti di questi comandi si concentrano sulla gestione della memoria, ma ce ne sono altri che sono preziosi per fornire una panoramica dello stato del server Redis. Questo tutorial fornirà dettagli su come utilizzare alcuni di questi comandi per diagnosticare e risolvere i problemi che potresti incontrare durante l’uso di Redis.

Come Utilizzare Questa Guida

Questa guida è scritta come un promemoria con esempi autocontenuti. Ti incoraggiamo a saltare a qualsiasi sezione che sia rilevante per il compito che stai cercando di completare.

I comandi mostrati in questa guida sono stati testati su un server Ubuntu 22.04 che esegue Redis versione 6.0.16. Per configurare un ambiente simile, puoi seguire Passaggio 1 della nostra guida su Come Installare e Proteggere Redis su Ubuntu 22.04. Dimostreremo il comportamento di questi comandi eseguendoli con redis-cli, l’interfaccia a riga di comando di Redis. Se stai utilizzando un’interfaccia Redis diversa — Redli, ad esempio — l’output esatto di alcuni comandi potrebbe essere diverso.

In alternativa, potresti fornire un’istanza di database Redis gestita per testare questi comandi, ma a seconda del livello di controllo consentito dal tuo fornitore di database, alcuni comandi in questa guida potrebbero non funzionare come descritto. Per fornire un Database Gestito DigitalOcean, segui la nostra documentazione del prodotto Managed Databases. Successivamente, devi o installare Redli o configurare un tunnel TLS per connetterti al Database Gestito tramite TLS.

memory usage ti indica quanto memoria viene attualmente utilizzata da una singola chiave. Prende il nome di una chiave come argomento e restituisce il numero di byte che essa utilizza. Per prima cosa, imposta una variabile di esempio:

  1. set key_meaningOfLife "Food"

Successivamente, controlla la memoria con memory usage:

  1. memory usage key_meaningOfLife
Output
(integer) 88

Per una comprensione più generale di come il tuo server Redis sta utilizzando la memoria, puoi eseguire il comando memory stats:

  1. memory stats

Questo comando restituisce un array di metriche legate alla memoria e i loro valori. Di seguito sono riportate le metriche segnalate da memory stats:

  • peak.allocated: Il picco di byte consumati da Redis
  • total.allocated: Il numero totale di byte allocati da Redis
  • startup.allocated: Il numero iniziale di byte consumati da Redis all’avvio
  • replication.backlog: La dimensione del backlog di replica, in byte
  • clients.slaves: La dimensione totale di tutti i sovraccarichi dei replica, che significa i buffer di output e di query e i contesti di connessione
  • clients.normal: La dimensione totale di tutti i sovraccarichi dei clienti
  • aof.buffer: La dimensione totale dei buffer del file di sola aggiunta corrente e riscritturaappend-only file
  • db.0: I sovraccarichi dei dizionari principali e di scadenza per ciascun database in uso sul server, riportati in byte
  • overhead.total: La somma di tutti i sovraccarichi utilizzati per gestire lo spazio delle chiavi di Redis
  • keys.count: Il numero totale di chiavi memorizzate in tutti i database sul server
  • keys.bytes-per-key: Il rapporto tra l’utilizzo netto della memoria del server e keys.count
  • dataset.bytes: La dimensione del dataset, in byte
  • dataset.percentage: La percentuale di utilizzo netto della memoria di Redis occupata da dataset.bytes
  • peak.percentage: La percentuale di peak.allocated prelevata da total.allocated
  • fragmentation: Il rapporto tra la quantità di memoria attualmente in uso diviso dalla memoria fisica che Redis sta effettivamente utilizzando

memory malloc-stats fornisce un rapporto di statistica interna da jemalloc, l’allocatore di memoria utilizzato da Redis sui sistemi Linux:

  1. memory malloc-stats

Se sembra che tu stia incontrando problemi legati alla memoria, ma l’analisi dell’output dei comandi precedenti si rivela inutile, puoi provare a eseguire memory doctor:

  1. memory doctor

Questa funzione restituirà eventuali problemi di consumo di memoria che riesce a individuare e suggerirà soluzioni potenziali.

Ottenere informazioni generali sulla tua istanza di Redis

A debugging command that isn’t directly related to memory management is monitor. This command allows you to review a constant stream of every command processed by the Redis server:

  1. monitor
Output
OK 1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared" 1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"

Un altro comando utile per il debug è info, che restituisce diverse informazioni e statistiche sul server:

  1. info
Output
# Server redis_version:6.0.16 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:a3fdef44459b3ad6 redis_mode:standalone os:Linux 5.15.0-41-generic x86_64 . . .

Questo comando restituisce molte informazioni. Se desideri ottenere solo un blocco di informazioni, puoi specificarlo come argomento di info:

  1. info CPU
Output
# CPU used_cpu_sys:173.16 used_cpu_user:70.89 used_cpu_sys_children:0.01 used_cpu_user_children:0.04

Nota che le informazioni restituite dal comando info dipenderanno dalla versione di Redis che stai utilizzando.

Utilizzo del comando keys

Il comando keys è utile nei casi in cui hai dimenticato il nome di una chiave, o forse ne hai creato una ma hai accidentalmente sbagliato il nome. keys cerca le chiavi che corrispondono a un determinato pattern:

  1. keys pattern

Sono supportate le seguenti variabili di stile globale:

  • ? è un carattere jolly che sta per un singolo carattere, quindi s?mmy corrisponde a sammy, sommy e sqmmy
  • * è un carattere jolly che sta per qualsiasi numero di caratteri, incluso nessun carattere, quindi sa*y corrisponde a sammy, say, sammmmmmy e salmony
  • Puoi specificare due o più caratteri che il pattern può includere racchiudendoli tra parentesi quadre, quindi s[ai]mmy corrisponderà a sammy e simmy, ma non a summy
  • Per impostare un carattere jolly che ignora una o più lettere, racchiudile tra parentesi quadre e precedile con un accento circonflesso (^), quindi s[^oi]mmy corrisponderà a sammy e sxmmy, ma non a sommy o simmy
  • Per impostare un carattere jolly che include un intervallo di lettere, separa l’inizio e la fine dell’intervallo con un trattino e racchiudilo tra parentesi quadre, quindi s[a-o]mmy corrisponderà a sammy, skmmy e sommy, ma non a srmmy

Attenzione: La documentazione di Redis avverte che keys dovrebbe quasi mai essere usato in un ambiente di produzione poiché può avere un impatto negativo significativo sulle prestazioni.

Conclusione

Questa guida dettaglia una serie di comandi che sono utili per risolvere i problemi che si possono incontrare durante il lavoro con Redis. Se ci sono altri comandi correlati, argomenti o procedure di cui vorresti saperne di più in questa guida, per favore chiedi o fai suggerimenti nei commenti.

Per ulteriori informazioni sui comandi Redis, consulta la nostra serie di tutorial su Come Gestire un Database Redis.

Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis