redis 过期的 key 是否会从内存删除?

2015-10-27 16:02:57 +08:00
 larkifly
如题,很多文章解释是,获取一个 key ,会先判断是否超过过期时间,超过了,则返回空,那言下之意是不是就不删除了?
11099 次点击
所在节点    程序员
6 条回复
neoblackcap
2015-10-27 16:16:10 +08:00
用 redis 自带的 expire 功能不好?超过了肯定是空,你还不用判断。

至于 redis 是否会删除过期的 key ,看情况,一般来说你不能简单理解一个 key 一过期,它的内存空间就立刻被被回收了
Monad
2015-10-27 16:20:13 +08:00
有两种策略同时处理过期的 key:
1. 定时遍历整个超时 Key 的 Dict, 每次遍历一部分, 若 Key 超时则在数据 Dict 中直接删除之, 同时干掉 Key
2. 当获取 Key 对应的 Value 时判断 Key 是否已经过期,过期则删除 Value 同时返回 Nil
czheo
2015-10-27 16:20:58 +08:00
SparkMan
2015-10-27 19:03:33 +08:00
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。------官方原文
restran
2015-10-28 09:16:11 +08:00
获取一个 key ,如果超过过期时间,则返回空。至于这个 key 什么时候删除,怎么删除,则是由 redis 负责,对用户透明。可以参考 http://redisbook.com/
jugelizi
2015-10-28 12:57:43 +08:00
写个大文件进去不就知道了,看过期后内存占用情况,从外部来看 get 返回是没有的,至于是否回收内存应该是做了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231471

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX