Questo non può essere fatto direttamente. Puoi aggiungere una scadenza sull'hset nel suo insieme, ma non sui singoli campi. Se vuoi farlo, puoi chiamare r.expire('name', time)
, dove time
è il numero di secondi fino alla scadenza.
In alternativa, puoi utilizzare set
invece di hset
:
for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)
Ciò eliminerà alcune funzionalità, poiché (ad esempio) non avrai un buon modo per elencare tutte le chiavi che iniziano con 'nome:', ma ti consentirà di impostare le scadenze delle chiavi in modo indipendente.
Come seconda opzione, puoi impostare le scadenze nei valori di hset
. Ciò richiede la logica lato client e Redis non eseguirà alcuna cancellazione per te; ma potresti fare qualcosa del tipo:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
E poi, se hai mai letto un valore la cui scadenza è nel passato, lo consideri un errore di cache. Questo non ti aiuterà se stai cercando di far scadere le chiavi per liberare memoria, ma se il tuo obiettivo è far scadere le chiavi per qualche motivo di correttezza, questo potrebbe funzionare per te.