注意事项:
LRU,least recently used,表示最近最少使用。他是基于链表实现的,将元素顺序排列,从表头开始到表尾,符合条件会先删除表尾元素。
redis却并没有使LRU方案,而是在redis-object中添加了最后一次访问时间属性,并根据配置随机采样,然后删除最久没用的那条数据。这样也会带来一个问题,没有随机到的数据就很长一段时间可以摸鱼,从而占用内存资源。这样不是理想的解决方案,为此redis新加入了LFU。
LFU,Least frequently used,表示最近不常用,原理是根据访问次数进行判断,没错!redis-object加入了访问频次属性,redis.conf 提供了两个配置项:lfu-decay-time、lfu-log-factor前者调整访问频次衰减速度,后者调整访问频次增长速度。