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

问题描述 投票:0回答:2

我想将redis用于文章(帖子) - 读取处理。我想在redis中存储每个用户读取的每篇文章的idex。

所以关键是userId和value(可能是list)是文章索引列表。我想为每个索引值设置过期时间。

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

- 附加信息

我想键 - 值(列表),并使列表中的每个值到期。如果到期一个键,我不希望所有的值丢失。我想删除特定的一个键。

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

如果您可以推荐相应的redis命令,那将是很好的。

redis
2个回答
0
投票

是的,这肯定是可能的

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

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


0
投票

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

写:

zadd user_id article_id expired_time

读:

zrange user_id 0 -1 WITHSCORES  

当读取req到来时,获取此用户已读取的所有article_id,并删除所有过期的项目:

for i in res:
  if i.score < time.now()
    zrem user_id i.article_id
© www.soinside.com 2019 - 2024. All rights reserved.