Redis
 sql >> Database >  >> NoSQL >> Redis

Memorizzazione di chiavi con prefisso che scadono in redis

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.