Nie można tego zrobić bezpośrednio. Możesz dodać wygaśnięcie w hset jako całości, ale nie w poszczególnych polach. Jeśli chcesz to zrobić, możesz wywołać r.expire('name', time)
, gdzie time
to liczba sekund do wygaśnięcia.
Alternatywnie możesz użyć set
zamiast hset
:
for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)
Odbierze to część funkcjonalności, ponieważ (na przykład) nie będziesz mieć dobrego sposobu na wyświetlenie listy wszystkich kluczy zaczynających się od „nazwa:”, ale pozwoli ci to niezależnie ustawić wygaśnięcie ważności kluczy.
Jako drugą opcję możesz ustawić wygaśnięcia w wartościach hset
. Wymaga to logiki po stronie klienta, a Redis nie zrobi za ciebie żadnego kasowania; ale możesz zrobić coś takiego:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
A potem, jeśli kiedykolwiek przeczytasz wartość, której wygaśnięcie przypada w przeszłości, uważasz to za chybienie pamięci podręcznej. To nie pomoże, jeśli próbujesz wygasnąć klucze w celu zwolnienia pamięci, ale jeśli Twoim celem jest wygaśnięcie kluczy z jakiegoś powodu poprawności, może to zadziałać.