Това не може да се направи директно. Можете да добавите срок на валидност за hset като цяло, но не и за отделни полета. Ако искате да направите това, можете да извикате r.expire('name', time)
, където time
е броят на секундите до изтичане.
Като алтернатива можете да използвате set
вместо hset
:
for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)
Това ще отнеме известна функционалност, тъй като (например) няма да имате добър начин да изброите всички ключове, които започват с 'name:', но ще ви позволи да зададете срока на валидност за ключовете независимо.
Като втора опция можете да зададете срокове на валидност в стойностите на hset
. Това изисква логика от страна на клиента и Redis няма да извърши никакво изтриване вместо вас; но можете да направите нещо като:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
И тогава, ако някога прочетете стойност, чието изтичане е в миналото, смятате, че това е пропуск в кеша. Това няма да ви помогне, ако се опитвате да изтекат ключовете, за да освободите памет, но ако целта ви е ключовете да изтекат поради някаква причина за коректност, това може да работи за вас.