zoukankan      html  css  js  c++  java
  • redis 过期策略

    过期策略

    定期删除+惰性删除

    所谓定期删除,指的是 redis 默认是每隔 100ms随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。

    1.注意,这里可不是每隔 100ms 就遍历所有的设置过期时间的 key。而是每隔 100ms 随机抽取一些 key 来检查和删除的。

    2.问题,定期删除可能会导致很多过期 key 到了时间并没有被删除掉,所以就有了惰性删除:

    即在你获取某个 key 的时候,redis 会检查一下这个 key, 如果设置了过期时间并且过期了,则在此时就删掉这个key,不会返回任何内容。

    3.实际上,如果定期删除漏掉了很多过期 key,也没去查询这些key,也就没走惰性删除,那么如果大量过期 key 堆积在内存里,导致 redis 内存块耗尽了,咋整?

    答案是:走内存淘汰机制。

    内存淘汰机制

    --redis官方文档

    redis 内存淘汰机制有以下几个:

    • allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key。最常用的
    • noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错。
    • allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key。
    • volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key。
    • volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。
    • volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。

    LRU相关请移步这篇文章LRU

  • 相关阅读:
    资源: StaticResource, ThemeResource
    资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件
    绘图: Shape, Path
    绘图: Stroke, Brush
    动画: 线性动画, 关键帧动画
    动画: 缓动动画
    动画: ThemeAnimation(主题动画)
    动画: ThemeTransition(过渡效果)
    绑定: 与 Element 绑定, 与 Indexer 绑定, TargetNullValue, FallbackValue
    BeautifulSoup在Windows下安装(running 2to3)
  • 原文地址:https://www.cnblogs.com/charm-j/p/10373410.html
Copyright © 2011-2022 走看看