redis 默认是什么删除策略

worktile 其他 239

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Redis默认的删除策略是采用LRU(Least Recently Used)近期最少使用算法。

    LRU算法根据数据最近被访问的频率来决定删除哪些数据。当发生内存不足的情况时,Redis会优先删除最近最少被访问的数据,以腾出空间给新的数据使用。

    具体来说,Redis采用的是近似LRU算法。这是因为完全实现LRU算法在实际应用中成本较高,为了在性能和内存占用之间寻求一个平衡点,Redis使用了一种称为“近似LRU”的算法。

    近似LRU算法实际上是使用了一个称为“随机采样”的方式来选择要被淘汰的数据。在Redis中,数据会被分成不同的链表,这些链表按照最近被使用的频率进行排序。在淘汰数据时,Redis会从不同的链表中随机选择一些数据进行淘汰。

    需要注意的是,Redis的删除策略可以通过配置文件进行修改。除了LRU,Redis还提供了其他的删除策略,如LFU(Least Frequently Used)和TTL(Time to Live)等。用户可以根据自己的需求选择合适的删除策略。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Redis默认的删除策略是LRU(Least Recently Used,最近最少使用)。

    具体来说,当Redis的内存达到上限时,Redis会根据设置的maxmemory-policy配置来决定如何删除数据。默认情况下,maxmemory-policy设置为volatile-lru,表示使用LRU策略来删除已设置了过期时间的键。这意味着Redis会优先删除最近最少使用的已过期键,以释放内存空间。

    除了volatile-lru,Redis还提供了其他几种删除策略。下面是其中几种常见的删除策略:

    1. noeviction:表示当内存达到上限时,Redis将根据写操作的请求拒绝。即不进行内存淘汰操作,直到有足够的内存空间。

    2. allkeys-lru:表示使用LRU策略删除所有键,包括设置了过期时间和未设置过期时间的键。

    3. allkeys-random:表示随机删除所有键。

    4. volatile-random:表示随机删除已设置了过期时间的键。

    5. volatile-ttl:表示根据键的过期时间进行删除,优先删除剩余时间较短的键。

    注意,可以通过修改Redis的配置文件redis.conf中的maxmemory-policy参数来更改默认的删除策略。根据具体需求,可以选择合适的删除策略来平衡内存和性能的关系。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Redis 默认的删除策略是采用过期策略(Eviction Policy)进行删除。当设置了键的过期时间(TTL)后,当键过期后,Redis 会根据过期策略进行删除。

    一、Redis 过期策略介绍
    Redis 采用了惰性删除和定期删除两种过期策略。

    1. 惰性删除
      Redis 使用惰性删除来处理过期键。也就是说,在请求某个键时,会先检查键是否过期,如果过期了就删除该键。这样的好处是,只有在需要访问键时才会进行过期检查和删除,可以节省一些不必要的工作。

    2. 定期删除
      Redis 还使用定期删除来清理过期键。Redis 服务器每隔一段时间会从所有已设置过期时间的键中选择一部分键进行检查和删除。这样可以防止出现过多的过期键积压在内存中。

    二、Redis 过期策略的配置选项
    在 Redis 的配置文件 redis.conf 中,我们可以通过设置以下两个参数来对过期策略进行调整:

    1. maxmemory-policy
      该参数用于设置当内存达到上限时的内存淘汰策略,默认值为 volatile-lru。其可选的值有:
    • volatile-lru:按照 LRU(Least Recently Used)算法从已设置过期时间的键中淘汰最少使用的键。
    • volatile-lfu:按照 LFU(Least Frequently Used)算法从已设置过期时间的键中淘汰使用次数最少的键。
    • volatile-ttl:按照键的剩余过期时间从小到大来淘汰键。
    • volatile-random:随机淘汰已设置过期时间的键。
    • allkeys-lru:按照 LRU(Least Recently Used)算法从所有的键中淘汰最少使用的键。
    • allkeys-lfu:按照 LFU(Least Frequently Used)算法从所有的键中淘汰使用次数最少的键。
    • allkeys-random:随机淘汰所有的键。
    1. maxmemory-samples
      该参数用于设置每次检查过期键时的采样数,默认值为 3。它会影响定期删除策略的效果,采样的越多,过期键的删除就越及时,但同时也会增加 CPU 的负载。

    三、设置键的过期时间
    在 Redis 中,可以通过 EXPIRE 命令来为键设置过期时间。例如:EXPIRE key seconds,其中 key 是要设置过期时间的键的名称,seconds 是键的过期时间(单位为秒)。

    四、总结
    Redis 默认采用惰性删除和定期删除两种过期策略来处理过期键。我们可以通过配置文件中的参数来调整过期策略的行为,根据实际需求选择合适的配置。通过设置键的过期时间,并合理选择过期策略,可以帮助我们更好地管理 Redis 中的键,提高内存利用率。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部