如果一个键过期了,那么它什么时候会被删除呢?
定时删除策略对内存是最友好的:通过使用定时器,定时删除策略可以保证过期键会尽可能快地被删除,并释放过期键所占有的内存
它对CPU时间最不友好:在过期键比较多的情况下,删除过期键这一行为可能会占用相当一部分的CPU时间,在内存不紧张但是CPU时间非常紧张的情况下,将CPU时间用在删除和当前任务无关的过期键上,无疑会对服务器的响应时间和吞吐量造成影响
对CPU时间最友好:程序只会在取出键时才对键进行过期检查,这可以保证删除过期键的操作只会在非做不可的情况下进行,并且删除的目标仅限于当前处合理的键,它不会在删除无关键上花费任何CPU时间
对内存最不友好:如果一个键已经过期,而这个键又仍然保留在数据库中,那么只要这个过期键不被删除,它所占有的内存就不会释放,当数据库中又非常多的过期键,而它们又恰好没有被访问到,那么它们永远都不会被删除(可看出时内存泄漏--无用数据占用了大量的内存)
调用expireNeeded函数和使用GET命令
定期删除策略是前两种策略的一种整合和折中
原文:https://www.cnblogs.com/Seraphire-yili/p/14046450.html