sql >> Database teknologi >  >> NoSQL >> Redis

Hvordan udløber redis nøgler?

Kort sagt - for hvert redis-objekt er der en udløbstid. Medmindre du indstiller objektet til at udløbe, er det tidspunkt "aldrig".

Nu er udløbsmekanismen i sig selv semi-doven. Doven udløb betyder, at du faktisk ikke udløber objekterne, før de er læst. Når vi læser et objekt, tjekker vi dets udløbstidsstempel, og hvis det er i fortiden, returnerer vi intet og sletter objektet, mens vi er i gang. Men problemet er, at hvis en tast aldrig bliver rørt, optager den bare hukommelsen uden grund.

Så Redis tilføjer et andet lag af tilfældig aktiv udløb. Den læser bare tilfældige taster hele tiden, og når en udløbet tast berøres, slettes den baseret på den dovne mekanisme. Dette påvirker ikke udløbsadfærden, det tilføjer bare "skraldsamling" af udløbne nøgler.

Selvfølgelig er den faktiske implementering mere kompliceret end dette, men dette er hovedideen.

Du kan læse mere om det her:http://redis.io/commands/expire

Og kildekoden til den aktive udløbscyklus kan findes her:https://github.com/antirez/redis/blob/a92921da135e38eedd89138e15fe9fd1ffdd9b48/src/expire.c#L98



  1. Er der nogen måde at implementere paginering i foråret webflux og fjederdata reaktive

  2. Mongoose password hashing

  3. Sådan flettes dokumenter, når du importerer en fil til MongoDB

  4. MongoDB - Tilladelse nægtet til socket:/tmp/mongodb-27017.sock