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


    过期策略:

      我们在set key时,可以给一个expire time,就是过期时间

      这段过期时间以后,redis对key删除使用:定期删除+惰性删除

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

      定期删除因为随机的,很多key没有删除,就用到惰性删除

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

      

      但是如果定期删除漏掉很多过期key,也没进行查询,不能惰性删除,造成很多过期key堆积内存中,导致内存耗尽,这时使用内存淘汰机制。

    内存淘汰机制:

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

      LRU回收算法:

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

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

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

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

        

      

  • 相关阅读:
    数组中重复的数字-剑指Offer
    不用加减乘除做加法-剑指Offer
    扑克牌顺子-剑指Offer
    左旋转字符串-剑指Offer
    翻转单词顺序列-剑指Offer
    和为S的连续正数序列-剑指Offer
    和为S的两个数字-剑指Offer
    数组中只出现一次的数字-剑指Offer
    平衡二叉树-剑指Offer
    二叉树的深度-剑指Offer
  • 原文地址:https://www.cnblogs.com/zwp-627/p/11299415.html
Copyright © 2020-2023  润新知