To nelze udělat přímo. Můžete přidat expiraci na hset jako celek, ale ne na jednotlivá pole. Pokud to chcete udělat, můžete zavolat r.expire('name', time)
, kde time
je počet sekund do vypršení platnosti.
Alternativně můžete použít set
místo hset
:
for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)
To vám odebere některé funkce, protože (například) nebudete mít dobrý způsob, jak vypsat všechny klíče začínající na 'name:', ale umožní vám to nastavit expirace klíčů nezávisle.
Jako druhou možnost můžete nastavit expirace v hodnotách hset
. To vyžaduje logiku na straně klienta a Redis za vás žádné vymazání neprovede; ale můžete udělat něco jako:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
A pokud pak někdy čtete hodnotu, jejíž expirace je v minulosti, považujete to za vynechání mezipaměti. To vám nepomůže, pokud se snažíte vypršet platnost klíčů, abyste uvolnili paměť, ale pokud je vaším cílem, aby platnost klíčů vypršela z nějakého důvodu správnosti, mohlo by vám to fungovat.