• 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:禁止驱逐数据(直接报错)

  • 相关阅读:
    js参数自定义
    分页插件--记录
    .net mvc接收参数为null的解决方案
    c#枚举转字典或表格
    openlayers添加弹出框
    openlayers按坐标点播放
    openlayers轨迹匀速播放
    MyEclipse配置进行Hibernate逆映射
    BIO,NIO,AIO
    Git遇到的一点错误
  • 原文地址:https://www.cnblogs.com/JMrLi/p/12851270.html
Copyright © 2020-2023  润新知