redis过时策略与内存淘汰机制分析

过时策略:

  咱们在set key时,能够给一个expire time,就是过时时间redis

  这段过时时间之后,redis对key删除使用:按期删除+惰性删除算法

  按期删除指redis默认在100ms内随机抽取一些设置了过时时间的key,检查是否过时,过时就删除。排序

  按期删除由于随机的,不少key没有删除,就用到惰性删除内存

  惰性删除是在查询某个key时,redis检查下这个key是否过时,过时就删除。im

  

  可是若是按期删除漏掉不少过时key,也没进行查询,不能惰性删除,形成不少过时key堆积内存中,致使内存耗尽,这时使用内存淘汰机制。链表

 

内存淘汰机制:

  通常使用allkeys-lru:当内存不足以容纳新写入数据时,在键空间内移除最少使用的key数据

  LRU回收算法:

    使用哈希链表。哈希表由若干个key-value组成,逻辑上这些key,value是无序的。在哈希链表中,每一个key-value都有他的前驱key-value、后驱key-value,像双向链表中的节点。这样哈希链表就有序。查询

    将哈希列表中的key-value按照时间排序。di

    每次访问新的key,将其key-value插入到链表最右端。时间

    当内存不足时,将最左端key-value删除。

相关文章
相关标签/搜索