Redis缓存淘汰测略
单线程的Redis为什么快?
为什么需要缓存淘汰测略:
内存数据不淘汰会越来越多,最终导致内存溢出
八种内存淘汰测略:
- 不删除 key ,当到达最大阈值后报错 :noeviction
- 设过期 key 中选择使用数最小的 :volatile - lrw
- 在所有 key 中选择使用数最小的 :allkeys - lru
- 过期 key 中使用 lfu 算法 :volatile - lfu
- 所有 key 用 lfu 算法 :allkeys - lfu
- 过期 key 随机删除 :volatile - random
- 所有 key 碎甲删除 :allkeys - random
- 过期 key 中最早过期的删除 : volatile - ttl
lru:最近最少使用,实现方式:使用一个链表,被使用就放到表头,其他后推,超过表尾的就删除 这个方法可能用的少,但是实用
lfu:最近最不经常使用,实现方式:使用一个计数器,用的少的就删除,这个方法用的少
何时淘汰删除:
消极处理:在读取数据前再判断
积极处理:周期性判断
主动处理:超出阈值就删除
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 IT蛋的个人博客!