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