zoukankan      html  css  js  c++  java
  • redis如何清理过期数据+++redis缓存满了的策略

    1.redis如何清理过期数据

    redis出于性能上的考虑,无法做到对每一个过期的key进行即时的过期监听和删除。但是redis提供了其它的方法来清理过期的key。

    1.被动清理

    当用户主动访问一个过期的key时,redis会将其直接从内存中删除。

    2.主动清理

        在redis的持久化中,我们知道redis为了保持系统的稳定性,健壮性,会周期性的执行一个函数。在这个过程中,会进行之前已经提到过的自动的持久化操作,同时也会进行内存的主动清理。
        在内存主动清理的过程中,redis采用了一个随机算法来进行这个过程:简单来说,redis会随机的抽取N(默认100)个被设置了过期时间的key,检查这其中已经过期的key,将其清楚。同时,如果其中已经过期的key超过了一定的百分比M(默认是25),则将继续执行一次主动清理,直至过期key的百分比在概率上降低到M一下。

    3.内存不足时触发主动清理

    在redis的内存不足时,也会触发主动清理。

    2.redis缓存满了怎么处理

    redis允许用户通过配置maxmemory-policy参数,指定redis在内存不足时的解决策略。

      1.volatile-lru 使用LRU算法删除一个键(只针对设置了过期时间的key
      2.allkeys-lru 使用LRU算法删除一个键
      3.volatile-lfu 使用LFU算法删除一个键(只针对设置了过期时间的键)
      4.allkeys-lfu 使用LFU算法删除一个键
      5.volatile-random 随机删除一个键(只针对设置了过期时间的键)
      6.allkeys-random 随机删除一个键
      7.volatile-ttl 删除最早过期的一个键
      8.noeviction 不删除键,返回错误信息(redis默认选项)

    对于只针对设置了过期时间的键进行删除的策略,在所有的可被删除的键(非永久的键)都被删除时内存依然不足,将会抛出错误。
    其中,LRU算法—>最近最少使用算法,较为注重于时间;LFU算法—>最近最不常用算法,较为注重于被访问频率。redis的内存置换算法和操作系统中的内存置换算法类似,就不在这里展开了。

  • 相关阅读:
    详解Oracle安装与配置.
    如何做大规模软件的配置管理
    关于软件权限设置的一点心得体会
    使用RDLC报表(一)
    详细解析Linux scp命令的应用
    spring propertyplaceholderconfigurer
    hibernate ehcache
    由Eclipse内存不足谈谈JVM内存
    事务策略: API 层策略
    什么叫控制反转(IoC )
  • 原文地址:https://www.cnblogs.com/linhongwenBlog/p/14578494.html
Copyright © 2011-2022 走看看