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的内存置换算法和操作系统中的内存置换算法类似,就不在这里展开了。

  • 相关阅读:
    Android 数据存储四种方式
    Android 文件系统路径
    Android 修改R包名方法
    Android startActivity 页面跳转
    Android 硬件加速器及其问题小结 gif不显示
    Android 用户界面 ViewGroup(FrameLayout LinearLayout AbsoluteLayout RelativeLayout TableLayout)
    Android 中解决输入法挡住输入框的问题
    Android 调用系统自带应用
    Android onMeasure(widthSpec, heightSpec)
    Android Bitmap Caching Bitmaps(渣翻译)
  • 原文地址:https://www.cnblogs.com/linhongwenBlog/p/14578494.html
Copyright © 2011-2022 走看看