redis中的key的两种过期机制

发布: 2013-06-23 12:27

可以说redis是一个纯内存的缓存系统,其能存储的数据量不会超过节点的最大内存容量。
所以key的过期清理机制非常重要。

一种比较常用的机制是,在读取key的时候,检测是否过期。
这是当前所有的内存K/V都在使得的办法,这种办法的CPU代价很低,顺便就能实现。
不过这种机制有一个问题,对于那些比较少访问的数据,
很有可能一直没有机会处理失效,而长时间浪费本应该回收的内存。

redis实现了另外一种过期机制,定时分批扫描有过期设置的key。
比如每秒扫描100个这种key,如果有已经过期的,则删除。
下一秒扫描下个100个key,循环执行。
这种机制保证了过期的key一定能够从内存中删除,节省内存空间。
这机制由于需要定时扫描,有一定的CPU消耗。不过在每次扫描时,
并非扫描全部数据,所以算是对CPU消耗与内存消耗两者的比较好的折衷方案。


原文: http://qtchina.tk/?q=node/732

Powered by zexport