如何让Redis的Value过期-成都快上网建站

如何让Redis的Value过期

这篇文章给大家介绍如何让redis的Value过期,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

仁和ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!


Redis 的持久化特性是它的一大亮点,但是它并不会被我们用来做持久化存储。因此,如何让 Redis 的 key 或 value 过期就显得非常重要!今天,我就简单的来说一下,这个面试题!

Redis 本身是自带的有过期机制的,但是这个过期机制只针对具体的 Key 过期,而 Value 如何过期,没有特定的功能。但是在某些场景下,往往还需要让 Redis 的 Value 过期,而 Key 不过期。

比如,我们现在有一个需求,需要对 15 分钟内的文章进行一次阅读统计。并且要求每分钟统计一次,找出热点文章,做特殊处理。每篇文章都有一个唯一 ID 进行标示。

现举例有文章的阅读数量变化如下:

[100, 520, 666, 888, 996 ...]

如果文章太多,就会浪费很多的内存空间!我们需要及时清理一些 Value 数据,而让 Key 过期,可能就不太适用我们的场景了!

那么如何做呢?

这个时候,Redis 的有序集合就可以派上用场了!

通过对指定的值可以指定 score,然后根据 score 来进行排序;然后再通过 ZRANGEBYSCORE 来获取一定范围内 score 所对应的 value。

ZRANGEBYSCORE key score1 #   文章id   时间戳    阅读数 ZADD id    1577591750 996

现在,如果我们想要获取 15 分钟内的数据,就可以这样做:

ZRANGEBYSCORE id now - 15 * 60 now

但还是不够完美,因为我们的值虽然是取对了,可 Value 并没有过期。

所以,针对上面的命令,我们还可以再优化一下!

ZRANGEBYSCORE id 0 now - 15 * 60

最后,你还需要注意的是,除了 Value 过期,key 也要注意,key 也需要设置过期。

# 24 小时后整个 key 过期EXPIRE key 24 * 60 * 60

上面我的这个例子可能不是特别的恰当,针对的也是有序集合。如果是非有序集合,也有网友回答说,先 get 值,然后淘汰旧数据后,再重新 set 值。不过,我的建议是选择合适的数据结构更重要!

关于如何让Redis的Value过期就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


本文标题:如何让Redis的Value过期
标题来源:http://kswjz.com/article/iiphie.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流