单线程的Redis为什么快?

为什么需要缓存淘汰测略:

内存数据不淘汰会越来越多,最终导致内存溢出

八种内存淘汰测略:
  1. 不删除 key ,当到达最大阈值后报错 :noeviction
  2. 设过期 key 中选择使用数最小的 :volatile - lrw
  3. 在所有 key 中选择使用数最小的 :allkeys - lru
  4. 过期 key 中使用 lfu 算法 :volatile - lfu
  5. 所有 key 用 lfu 算法 :allkeys - lfu
  6. 过期 key 随机删除 :volatile - random
  7. 所有 key 碎甲删除 :allkeys - random
  8. 过期 key 中最早过期的删除 : volatile - ttl

lru:最近最少使用,实现方式:使用一个链表,被使用就放到表头,其他后推,超过表尾的就删除 这个方法可能用的少,但是实用

lfu:最近最不经常使用,实现方式:使用一个计数器,用的少的就删除,这个方法用的少

何时淘汰删除:

消极处理:在读取数据前再判断

积极处理:周期性判断

主动处理:超出阈值就删除