sql >> Database >  >> NoSQL >> Redis

SCAN vs KEYS-prestaties in Redis

U moet zich niet druk maken om de uitvoering van de huidige opdracht, maar om de impact op alle andere opdrachten, aangezien Redis opdrachten verwerkt met een enkele thread (d.w.z. terwijl een opdracht wordt uitgevoerd, moeten alle andere wachten totdat de uitvoering ervan is beëindigd).

Terwijl keys of scan kan u vergelijkbare of identieke prestaties bieden die alleen in uw geval worden uitgevoerd, enkele milliseconden die Redis blokkeren, zullen de algehele I/O aanzienlijk verminderen.

Dit is de belangrijkste reden om keys te gebruiken voor ontwikkelingsdoeleinden en scan op productieomgevingen.

OP zei:

"Hoewel sleutels of scan u vergelijkbare of identieke prestaties kunnen bieden als ze alleen worden uitgevoerd in uw geval, zullen enkele milliseconden die Redis blokkeren de algehele I/O aanzienlijk verminderen." - Deze zin lijkt erop te wijzen dat het ene commando Redis blokkeert en het andere niet, wat niet het geval kan zijn. Als ik gegarandeerd 100 resultaten krijg van mijn oproep naar KEYS, op welke manier is het dan erger dan SCAN? Waarom denk je dat één commando meer vatbaar is voor blokkering?

Er moet een groot verschil zijn wanneer u de zoekopdracht kunt pagineren. Het is niet hetzelfde om 100 sleutels in één keer te krijgen dan om paginering te implementeren en 100 sleutels te krijgen, 10 bij 10 (of 50 en 50). Deze zeer kleine onderbreking kan ervoor zorgen dat andere opdrachten die door de applicatielaag worden verzonden, door Redis worden verwerkt . Bekijk wat de officiële documentatie van Redis hierover zegt:

Aangezien deze commando's incrementele iteratie mogelijk maken, waarbij slechts een klein aantal elementen per aanroep wordt geretourneerd, kunnen ze in productie worden gebruikt zonder de keerzijde van commando's zoals KEYS of SMEMBERS die de server voor lange tijd (zelfs enkele seconden) kunnen blokkeren wanneer ze worden aangeroepen tegen grote verzamelingen sleutels of elementen

.



  1. Verwijder duplicaat in MongoDB

  2. Volgende stop - Een datapijplijn bouwen van Edge naar Insight

  3. Geneste gegevens van MongoDB in een gegevensframe van Panda's krijgen

  4. Wat is de standaard sessietime-out en hoe deze te configureren bij gebruik van de Spring Session met Redis als backend