共计 424 个字符,预计需要花费 2 分钟才能阅读完成。
1. 定时删除:在设置键的过期时间的同时,创建一个 timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。(主动删除)
对内存友好,但是对 cpu 时间不友好,有较多过期键的而情况下,删除过期键会占用相当一部分 cpu 时间。
2. 惰性删除:放任过期键不管,但是每次从键空间中获取键时,都检查取到的键是否过去,如果过期就删除,如果没过期就返回该键。(被动删除)
对 cpu 时间友好,程序只会在取出键的时候才会对键进行过期检查,这不会在删除其他无关过期键上花费任何 cpu 时间,但是如果一个键已经过期,而这个键又保留在数据库中,那么只要这个过期键不被删除,他所占用的内存就不会释放,对内存不友好。
3. 定期删除:每隔一段时间就对数据库进行一次检查,删除里面的过期键。(主动删除)
采用对内存和 cpu 时间折中的方法,每个一段时间执行一次删除过期键操作,并通过限制操作执行的时长和频率来减少对 cpu 时间的影响。难点在于,选择一个好的策略来设置删除操作的时长和执行频率。
正文完