sql >> Databasteknik >  >> NoSQL >> Redis

Lagra nycklar med prefix som upphör att gälla på redis

Detta kan inte göras direkt. Du kan lägga till ett utgångsdatum på hset som helhet, men inte på enskilda fält. Om du vill göra detta kan du ringa r.expire('name', time) , där time är antalet sekunder till utgången.

Som ett alternativ kan du använda set istället för hset :

for i in range(10):
    r.set('name:' + str(i), i, ex=time_to_expire_s)

Detta kommer att ta bort en del funktionalitet, eftersom du (till exempel) inte kommer att ha ett bra sätt att lista alla nycklar som börjar med 'namn:', men det låter dig ställa in utgångsdatum för nycklar oberoende av varandra.

Som ett andra alternativ kan du ställa in utgångsdatum i värdena för hset . Detta kräver logik på klientsidan, och Redis kommer inte att göra någon utplåning åt dig; men du kan göra något som:

for i in range(10):
    r.hset(
        'name',
        i,
        json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
    )

Och sedan om du någon gång läser ett värde vars utgångsdatum ligger i det förflutna, anser du att det är en cachemiss. Detta kommer inte att hjälpa dig om du försöker förfalla nycklar för att frigöra minne, men om ditt mål är att få nycklarna att förfalla av någon sorts korrekthetsskäl, kan detta fungera för dig.




  1. Ska jag använda alternativet allowDiskUse i en produktmiljö?

  2. Hur man projicerar arrayindex efter att ha avvecklat en array med MongoDB-aggregationsramverk

  3. viloläge andra nivåns cache med Redis - kommer det att förbättra prestandan?

  4. mongodb-autentisering med anslutningssträng