Redis的删除策略
删除策略皆在维护Redis在内存中占用的空间,在性能和存储中找到一个平衡,避免在使用中出现内存泄漏,cpu占用过高的情况,保证业务的流畅平稳运行。
Redis的删除策略分为三种,定时删除,定期删除,惰性删除
定时删除
创建一个计时器,对key设置有效时间,当key过期时就删除。
优点:快速释放空间
缺点:对cpu占用高,只要到了设置的时间就会运行删除策略即使没有进行删除(时间换空间)
惰性删除
数据到达过期时间是不做删除,如果访问该数据,先判断是否过期,没有过期就返回数据,过期就删除
优点:节省性能,在必要时才删除
缺点:占用空间, 如果不访问的过期数据过多会导致内存压力过大(空间换时间)
定期删除
定期删除是每隔一段时间,程序就会对 Redis 数据进行一次检查,删除里面的过期 key,至于要删除多少过期 key,以及要检查多少个 db,则是由 Redis 内部算法决定。
优点:通过算法在定时删除和惰性删除间找到一个折中的性能空间消耗,更合理的利用服务器的cpu和内存空间
在这里为了尽量避免演化为定期删除,或者惰性删除,CPU性能占用设置有峰值,检测频度可自定义设置;内存压力不是很大,长期占用内存的冷数据会被持续清理
总结
- 定时删除 节约内存,不分时段执行,占用内存低,CPU资源耗损高,拿时间换空间
- 惰性删除 内存占用严重 ,延迟执行,内存占用高,CPU损耗低,拿空间换时间
- 定期删除 内存定期随机清理 ,每秒花费固定的CPU资源维护内存 随机抽查,重点抽查