gpt4 book ai didi

python - 在redis中存储带有过期前缀的键

转载 作者:IT王子 更新时间:2023-10-29 05:58:56 25 4
gpt4 key购买 nike

尝试使用键前缀存储过期 x 时间的值

我正在使用 redis。我目前正在使用 hset 存储值

import redis


r = redis.StrictRedis('localhost')


for i in range(10):
r.hset('name', i, i)


print(r.hgetall('name'))

我希望每个 key 都有不同的过期时间,因为我将单独存储每个 key 。

我该怎么做?

最佳答案

这不能直接完成。您可以在整个 hset 上添加过期时间,但不能在单个字段上添加。如果你想这样做,你可以调用 r.expire('name', time),其中 time 是到期前的秒数。

作为替代方案,您可以使用 set 而不是 hset:

for i in range(10):
r.set('name:' + str(i), i, ex=time_to_expire_s)

这将带走一些功能,因为(例如)您将无法列出所有以“名称:”开头的 key ,但它可以让您独立设置 key 的过期时间。

作为第二个选项,您可以在 hset 的值中设置到期时间。这需要客户端逻辑,Redis 不会为您做任何删除;但你可以这样做:

for i in range(10):
r.hset(
'name',
i,
json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
)

然后,如果您曾经读取过一个过期时间为过去的值,您会认为这是一次缓存未命中。如果您试图使 key 过期以释放内存,这对您没有帮助,但如果您的目标是出于某种正确性原因让 key 过期,这可能对您有用。

关于python - 在redis中存储带有过期前缀的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com