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.
Risoluzione dei Problemi Legati alla Memoria
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:
- set key_meaningOfLife "Food"
Successivamente, controlla la memoria con memory usage
:
- 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
:
- 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 Redistotal.allocated
: Il numero totale di byte allocati da Redisstartup.allocated
: Il numero iniziale di byte consumati da Redis all’avvioreplication.backlog
: La dimensione del backlog di replica, in byteclients.slaves
: La dimensione totale di tutti i sovraccarichi dei replica, che significa i buffer di output e di query e i contesti di connessioneclients.normal
: La dimensione totale di tutti i sovraccarichi dei clientiaof.buffer
: La dimensione totale dei buffer del file di sola aggiunta corrente e riscritturaappend-only filedb.0
: I sovraccarichi dei dizionari principali e di scadenza per ciascun database in uso sul server, riportati in byteoverhead.total
: La somma di tutti i sovraccarichi utilizzati per gestire lo spazio delle chiavi di Rediskeys.count
: Il numero totale di chiavi memorizzate in tutti i database sul serverkeys.bytes-per-key
: Il rapporto tra l’utilizzo netto della memoria del server ekeys.count
dataset.bytes
: La dimensione del dataset, in bytedataset.percentage
: La percentuale di utilizzo netto della memoria di Redis occupata dadataset.bytes
peak.percentage
: La percentuale dipeak.allocated
prelevata datotal.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:
- 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
:
- 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:
- monitor
OutputOK
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:
- 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
:
- 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:
- keys pattern
Sono supportate le seguenti variabili di stile globale:
?
è un carattere jolly che sta per un singolo carattere, quindis?mmy
corrisponde asammy
,sommy
esqmmy
*
è un carattere jolly che sta per qualsiasi numero di caratteri, incluso nessun carattere, quindisa*y
corrisponde asammy
,say
,sammmmmmy
esalmony
- Puoi specificare due o più caratteri che il pattern può includere racchiudendoli tra parentesi quadre, quindi
s[ai]mmy
corrisponderà asammy
esimmy
, ma non asummy
- Per impostare un carattere jolly che ignora una o più lettere, racchiudile tra parentesi quadre e precedile con un accento circonflesso (
^
), quindis[^oi]mmy
corrisponderà asammy
esxmmy
, ma non asommy
osimmy
- 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à asammy
,skmmy
esommy
, ma non asrmmy
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