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.