是否有可能使redis中的每个值到期?

时间:2019-04-19 06:28:45

标签: redis

我想使用redis进行文章(后期)读取处理。 我想在Redis中存储每个用户阅读的每篇文章的idex。

因此键是userId,值(可能是列表)是商品索引列表。 我想为每个索引值设置过期时间。

有可能吗?而且我想知道redis命令。

-其他信息

我想键入-value(list),并终止list中的每个值。 如果密钥过期,我不希望所有值丢失。我想删除特定的一键。

数据显示在下面, songkeyy-[1,2,3,4,5] 到期1:100ms,2:200ms,3:30ms ...像这样。

如果您可以推荐适当的redis命令,那就太好了。

2 个答案:

答案 0 :(得分:0)

是的,肯定有可能

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> 

您可以在密钥上设置TTL(生存时间),该密钥将在给定时间后过期。

答案 1 :(得分:0)

redis列表的设计和实现不支持此操作。但是还有另一种实现方法。

写:

zadd user_id article_id expired_time

阅读:

zrange user_id 0 -1 WITHSCORES  

阅读要求到来时,获取该用户已阅读的所有article_id,并删除所有过期的项目:

for i in res:
  if i.score < time.now()
    zrem user_id i.article_id