一、好句
记忆的梗上,谁不油,两三朵娉婷,披着情绪的花。
二、背景
最近别人问我redis设置缓存有效时间然后失效的原理是什么,我想了想就回答了使用了队列,然后按照时间顺序来执行失效,那么问题来了,如果有1个亿的数据都是在1s内失效,那么来不及处理怎么办?
三、redis设置失效
3.1 过期的策略有三种:
立即过期
访问过期
定时过期
redis中的过期策略是其中两种即是访问过期,定时过期,还有就是暴力删除
3.2详解
访问过期:即是在访问的时候判断是否失效,如果失效则进行删除操作。
定时过期:即是如果定时的key量很小,只需要消耗一点点CPU就可以进行删除;但是如果定时的key的量太大,那么定时删除则会浪费CPU,所以redis内部会根据key数量大小,根据算法来删除一定比列的key。
暴力删除:这是指当内存超出设定的值的时候进行暴力删除。
思考:
其实自己当时想这个的时候首先想到队列,然后数据量大了,处理不及时又怎么办了,回来查了下资料才知道redis的操作方式。所以有时候自己就要发散思维,不能只局限于自己的思考,可能在思考的时候要考虑到其可能性。
参考:
<a href="http://www.cppblog.com/richbirdandy/archive/2011/11/29/161184.html">[redis如何删除过期数据]</a>