目录
定时删除
创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作。
优点:节约内存,到时就删除,快速释放掉不必要的内存占用;
缺点:CPU压力很大,无论此时CPU负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量;
总结:用处理器性能换取存储空间(用时间换空间)
惰性删除
什么是惰性删除?
数据到达过期时间,不做处理。等下次访问该数据时:
如果未过期,返回数据
发现已过期,删除,返回不存在
优点:节约CPU性能,发现必须删除的时候才删除;
缺点:内存压力很大,出现长期占用内存的数据;
总结:用存储空间换取处理器性能
定期删除
定时删除和惰性删除都走极端,有没有折中方案?
1.redis启动服务器初始化时,读取配置server.hz的值,默认为10,;
2.每秒钟执行server.hz次serverCron() ->databasesCron()->activeExpireCycle();
3. **activeExpireCycle()**对每个expires逐一进行检测,每次执行250ms/server.hz;
4. 对某个expires检测