Introductie
Redis is een open-source, in-memory key-value data store. Het wordt geleverd met verschillende commando’s die kunnen helpen bij het oplossen van problemen en debuggen. Vanwege de aard van Redis als een in-memory key-value store, richten veel van deze commando’s zich op geheugenbeheer, maar er zijn ook andere die waardevol zijn om een overzicht te krijgen van de status van uw Redis-server. Deze tutorial geeft details over hoe u enkele van deze commando’s kunt gebruiken om problemen te diagnosticeren en op te lossen die zich kunnen voordoen tijdens het gebruik van Redis.
Hoe dit handboek te gebruiken
Dit handboek is geschreven als een spiekbriefje met zelfstandige voorbeelden. We raden u aan om naar elk gedeelte te springen dat relevant is voor de taak die u probeert te voltooien.
De commando’s die in dit handboek worden getoond, zijn getest op een Ubuntu 22.04-server met Redis-versie 6.0.16. Om een vergelijkbare omgeving in te stellen, kunt u Stap 1 volgen van onze handleiding over Hoe Redis installeren en beveiligen op Ubuntu 22.04. We zullen demonstreren hoe deze commando’s zich gedragen door ze uit te voeren met redis-cli
, de command-line interface van Redis. Als u een andere Redis-interface gebruikt, zoals Redli, kan de exacte uitvoer van bepaalde commando’s verschillen.
Alternatief kunt u een beheerde Redis-database-instantie provisioneren om deze commando’s te testen, maar afhankelijk van het niveau van controle dat uw databaseprovider toestaat, werken sommige commando’s in deze handleiding mogelijk niet zoals beschreven. Om een DigitalOcean Managed Database te provisioneren, volgt u onze documentatie voor Beheerde Databases. Vervolgens moet u ofwel Redli installeren of een TLS-tunnel opzetten om verbinding te maken met de Beheerde Database via TLS.
Problemen met geheugen oplossen
memory usage
geeft aan hoeveel geheugen momenteel wordt gebruikt door een enkele sleutel. Het neemt de naam van een sleutel als argument en geeft het aantal bytes uit dat het gebruikt. Stel eerst een voorbeeldvariabele in:
- set key_meaningOfLife "Food"
Vervolgens controleert u het geheugen met memory usage
:
- memory usage key_meaningOfLife
Output(integer) 88
Voor een algemener begrip van hoe uw Redis-server geheugen gebruikt, kunt u het commando memory stats
uitvoeren:
- memory stats
Dit commando geeft een array van geheugen-gerelateerde metrieken en hun waarden weer. De volgende metrieken worden gerapporteerd door memory stats
:
peak.allocated
: Het piekaantal bytes verbruikt door Redistotal.allocated
: Het totale aantal bytes toegewezen door Redisstartup.allocated
: Het initiële aantal bytes verbruikt door Redis bij het opstartenreplication.backlog
: De grootte van de replicatieachterstand, in bytesclients.slaves
: De totale grootte van alle replica overhead, wat betekent de uitvoer- en querybuffers en verbindingstekstenclients.normal
: De totale grootte van alle clientoverheadsaof.buffer
: De totale grootte van de huidige en herschrijf alleen toevoegen buffersdb.0
: De overheads van de hoofd- en vervaldictionaires voor elke database in gebruik op de server, gerapporteerd in bytesoverhead.total
: De som van alle overheads die worden gebruikt om de keyruimte van Redis te beherenkeys.count
: Het totale aantal keys opgeslagen in alle databases op de serverkeys.bytes-per-key
: De verhouding tussen het netto geheugengebruik van de server enkeys.count
dataset.bytes
: De grootte van de dataset, in bytesdataset.percentage
: Het percentage van het netto geheugengebruik van Redis ingenomen doordataset.bytes
peak.percentage
: Het percentage vanpeak.allocated
uittotal.allocated
fragmentatie
: De verhouding van de hoeveelheid geheugen die momenteel in gebruik is, gedeeld door het fysieke geheugen dat Redis daadwerkelijk gebruikt.
memory malloc-stats
biedt een interne statistiekrapportage van jemalloc, de geheugenallocator die door Redis wordt gebruikt op Linux-systemen:
- memory malloc-stats
Als het lijkt alsof u te maken heeft met geheugen gerelateerde problemen, maar het parseren van de uitvoer van de vorige commando’s blijkt niet nuttig te zijn, kunt u memory doctor
proberen uit te voeren:
- memory doctor
Deze functie geeft eventuele geheugenverbruiksproblemen weer die het kan vinden en suggereert mogelijke oplossingen.
Algemene informatie over uw Redis-instantie krijgen
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"
Nog een nuttig commando voor debugging is info
, dat verschillende blokken informatie en statistieken over de server teruggeeft:
- 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
. . .
Dit commando retourneert veel informatie. Als u slechts één informatieblok wilt retourneren, kunt u dit specificeren als argument voor 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
Merk op dat de informatie die wordt geretourneerd door het info
-commando afhankelijk zal zijn van welke versie van Redis u gebruikt.
Het keys
-commando gebruiken
De keys
opdracht is nuttig in gevallen waarin je de naam van een sleutel bent vergeten, of misschien heb je er een gemaakt maar per ongeluk de naam verkeerd gespeld. keys
zoekt naar sleutels die overeenkomen met een patroon:
- keys pattern
De volgende glob-stijl variabelen worden ondersteund:
?
is een jokerteken dat staat voor elk enkel karakter, duss?mmy
past bijsammy
,sommy
, ensqmmy
*
is een jokerteken dat staat voor elk aantal karakters, inclusief helemaal geen karakters, dussa*y
past bijsammy
,say
,sammmmmmy
, ensalmony
- Je kunt twee of meer karakters specificeren die het patroon kan bevatten door ze in haken te plaatsen, dus
s[ai]mmy
zal overeenkomen metsammy
ensimmy
, maar niet metsummy
- Om een jokerteken in te stellen dat één of meer letters negeert, plaats je ze in haken en ga je ervoor met een dakje (
^
), duss[^oi]mmy
zal overeenkomen metsammy
ensxmmy
, maar niet metsommy
ofsimmy
- Om een jokerteken in te stellen dat een reeks letters omvat, scheid je het begin en einde van de reeks met een streepje en plaats je het in haken, dus
s[a-o]mmy
zal overeenkomen metsammy
,skmmy
, ensommy
, maar niet metsrmmy
Waarschuwing: De Redis documentatie waarschuwt dat keys
bijna nooit gebruikt zou moeten worden in een productieomgeving omdat het een grote negatieve invloed kan hebben op de prestaties.
Conclusie
Deze handleiding beschrijft een aantal commando’s die handig zijn voor het oplossen van problemen en het oplossen van problemen die zich kunnen voordoen bij het werken met Redis. Als er andere gerelateerde commando’s, argumenten of procedures zijn die u wilt leren kennen in deze handleiding, vraag dan of doe suggesties in de opmerkingen.
Voor meer informatie over Redis-commando’s, bekijk onze zelfstudie-serie over Hoe een Redis-database te beheren.
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis