1.过期数据:
2.删除策略:
2.1.定时删除:
2.2 惰性删除:
expireIfNeeded这个函数,在调用任何对数据操作的时候,内部都将先调用这个函数,这个函数就是检查是否数据过期的,也就是所有的get操作都与这个函数挂钩的,也就是只要拿数据 都是执行这个函数。
2.3 定期删除:
简单来说 ,就是每秒中执行若干次serverCron操作,在这个serverCron操作中会对所有的数据进行轮训访问(databaseCron操作),在访问的时候会对每一个库中的key进行轮训访问(activeExpireCycle操作,)访问的策略是:随机挑选若干个key,而这个若干 w–是配置来的,配置出来以后 就要判断这个里面有过期的就删除掉,同时看删除的量占整体的量是多还是少,如果多那么就再来一轮,如果少就停—再去下一个里面去找,同时记录你现在找到了哪个expires【*】,按照以上形式 一轮一轮的来进行。----这样呢,就利用了cpu的25%的时间阶段性的对它们(expires中的数据(过期数据))进行操作。--------那么这样的话,内存中的过期数据也会得到清理,cpu也不会一直在占用。----所以这就保证了 cpu和内存都不会是极端的情况。
在redis内部是采用 惰性删除+定期删除。
3.逐出算法: