Dit kan niet direct. U kunt een vervaldatum toevoegen aan de hset als geheel, maar niet aan afzonderlijke velden. Als je dit wilt doen, kun je r.expire('name', time)
. aanroepen , waar time
is het aantal seconden tot de vervaldatum.
Als alternatief kunt u set
. gebruiken in plaats van hset
:
for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)
Dit neemt wat functionaliteit weg, omdat je (bijvoorbeeld) geen goede manier hebt om alle sleutels weer te geven die beginnen met 'name:', maar je kunt wel de vervaldatums voor sleutels onafhankelijk instellen.
Als tweede optie kunt u vervaldatums instellen in de waarden van de hset
. Dit vereist logica aan de clientzijde, en Redis zal niets voor u wissen; maar je zou iets kunnen doen als:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
En als u dan ooit een waarde leest waarvan de vervaldatum in het verleden ligt, beschouwt u dat als een cache-misser. Dit zal je niet helpen als je sleutels probeert te laten verlopen om geheugen vrij te maken, maar als het je doel is om de sleutels om een of andere reden te laten verlopen, kan dit voor jou werken.