尝试使用键前缀存储过期时间x的值
我正在使用Redis。我目前正在使用hset存储值
import redis r = redis.StrictRedis('localhost') for i in range(10): r.hset('name', i, i) print(r.hgetall('name'))
我希望每个密钥都有不同的到期时间,因为我将分别存储每个密钥。
我该怎么做呢?
这不能直接完成。您可以在整个hset上添加有效期,但不能在单个字段上添加。如果要执行此操作,可以调用r.expire('name', time),其中time是到期之前的秒数。
r.expire('name', time)
time
或者,您可以使用set代替hset:
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 }) )
然后,如果您曾经读取过期的值,则认为这是缓存未命中。如果您试图使密钥过期以释放内存,这将无济于事,但是如果您的目标是出于某种正确性原因使密钥过期,那么这可能对您有用。