zoukankan      html  css  js  c++  java
  • redis内存淘汰机制

    Redis 的过期策略主要有两种思路:

    1、定期删除

       在redis中默认是每隔100ms 就随机抽取一些设置了过期时间的key,检查其是否过期,若过期就删除

            假设有100W的key,并且都设置了过期时间,如果全量检查的话,将会耗费大量的cpu时间,因此使用随机抽取。

           可能带来的问题是,已经过期的key还滞留在内存中,占用大量的宝贵内存空间。

    2、惰性删除

           当key过期后,不做删除动作,等到下次使用的时候,发现key过期,这时不在返回这个key的value,直接将这个key删掉。

    所以redis的过期策略是:定期删除+惰性删除 

    但是新的问题是,定期删除可有会导致很多过期的key到了时间并没有删除掉,然后我们也没有及时的去做检查,也没有惰性删除掉,此时的结果就是大量的过期key堆积在内存中,导致redis的内存被耗尽。

    最终的解决方式---------------内存淘汰机制。

    内存淘汰机制:

    1、noeviction:当内存不足以容纳新写入数据时,新写入操作报错。(谁傻谁用)
    2、allkey-lru:到内存不足以容纳新写入数据时,在key空间中,删除最近最少使用的key。(常见)
    3、allkey-random:当内存不足以容纳新写入数据时,在key空间中,随机删除某个key。(没有allkey-lru好)
    4、volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的key中,删除最近最少使用的key。(用得不多)
    5、volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的key中,随机删除。
    6、volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的key中,有更早过期时间的key优先删除。
    

      

      

  • 相关阅读:
    Element Pagination分页组件 二次封装
    vue 发送短信验证码倒计时
    生成动态海报,带二维码
    H5九宫格抽奖,亲测可用
    elementui el-select使用远程搜索单选,输入内容不会触发remote-method
    日期格式转换,转换格式YYYY-MM-DD HH:mm:ss
    bignumber.js是一款用于任意精度十进制和非十进制算术的JavaScript库
    element table切换分页不勾选的自带方法
    密码强度校验
    webdriver-设置代理
  • 原文地址:https://www.cnblogs.com/xzlive/p/13348221.html
Copyright © 2011-2022 走看看