zoukankan      html  css  js  c++  java
  • Redis 过期淘汰策略

    Redis使用懒惰删除+定期删除相结合的方式处理过期的key

    定期删除 -- 大量数据可能无法删除完

    当我们为KEY设置了过期时间后,Redis会将所有设置了过期时间的key放入一个字典中,

    Redis默认每隔100ms(1s10次扫描,每次扫描默认不会超过25ms)
    随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。

    可以通过限制删除操作执行的时长和频率,来减少删除操作对cpu的影响。
    为了保证不出现循环过度的情况,Redis还设置了扫描的时间上限,默认不会超过25ms。

    惰性删除 -- 对内存影响

    被动删除,只有当你查找KEY时,Redis会对KEY进行会检查一下 ,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。
    并不是key到时间就被删除掉,而是你查询这个key的时候,redis再懒惰的检查一下

    淘汰策略

    淘汰策略使用在 定期删除和惰性删除后所遗漏的过期KEY,(总是会遗留一些)堆积在内存中,慢慢超过设置的最大内存时,执行淘汰策略

    Redis 具体有 6 种淘汰策略:

    volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰

    volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰

    volatile-random:从已设置过期时间的数据集中任意选择数据淘汰

    allkeys-lru:从所有数据集中挑选最近最少使用的数据淘汰

    allkeys-random:从所有数据集中任意选择数据进行淘汰

    noeviction:禁止驱逐数据(直接报错)

  • 相关阅读:
    Python基础5_字典,集合
    Python基础3_基本数据类型,字符串,for循环
    Python基础2_while循环,格式化输出,基本运算符,编码,
    Python基础1_初识,注释,变量,if语句
    编写高质量代码[读书笔记]
    php地方天气
    [head first php&mysql]读书笔记-基本的安全信息(第五章)
    上传本地图片
    检测IE
    underscore源码解析(实用的功能)
  • 原文地址:https://www.cnblogs.com/JMrLi/p/12851270.html
Copyright © 2011-2022 走看看