Redis过期算法

2019-01-17  本文已影响0人  阿福德

(Least Recent Used)算法

Redis2.6中:

随机找三条记录,将空闲时间最长的记录删除, 然后在随机找出三条记录,将空闲时间最长的记录删除,直到内存够容纳新记录为止。

Redis3.0对这个算法进行了“大幅”改进, 其算法为:

随机找出5条记录,查到到一个按空闲时长排序的有序队列中,删除队列头,然后继续找5条记录,插入到这个队列中,继续删除。直到存够容纳新记录为止。

过期删除算法:

被动删除:有访问时,判断是否过期,过期了几删除
主动删除:如果数据一直没有被访问,则需要定期清除。算法如下:

在主线程上,每100毫秒执行一次,每次随机抽取20条进行check,将过期了的删除掉,如果其中有超过1/4的都是过期的, 则马上进行下一次随机抽取20条进行check;当然redis也留了一手,不至于主线程长时间都在进行主动删除,那就是,一次删除的时间如果超过了1毫秒,则结束本次主动删除,需要等下一个100毫秒。

上一篇下一篇

猜你喜欢

热点阅读