これを直接行うことはできません。 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:」で始まるすべてのキーを一覧表示するのは適切な方法ではありませんが、キーの有効期限を個別に設定できるためです。
2番目のオプションとして、hset
の値に有効期限を設定できます 。これにはクライアント側のロジックが必要であり、Redisはあなたに代わって消去を行いません。しかし、あなたは次のようなことをすることができます:
for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)
そして、有効期限が過去の値を読み取った場合、それはキャッシュミスであると見なします。これは、メモリを解放するためにキーを期限切れにしようとしている場合は役に立ちませんが、何らかの正当性の理由でキーを期限切れにすることが目標である場合は、これでうまくいく可能性があります。