zoukankan      html  css  js  c++  java
  • Redis详解(四)——删除策略

    Redis详解(四)——删除策略

    Redis中的数据特征

    Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令来获取其状态,当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。

    数据删除策略

    目标:在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成redis性能的整体下降,甚至引发服务器宕机或内存泄漏。

    • 定时删除

      创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作

      优点:节约内存,到时就删除,快速释放掉不必要的内存占用

      缺点:CPU压力很大,无论CPU此时负载多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量

      总结:用处理器性能换取存储空间

    • 惰性删除

      数据到达过期时间,不做处理。等下次访问该数据时发现以过期,删除,返回不存在

      优点:节约CPU性能,发现必须删除的时候才删除

      缺点:内存压力很大,出现长期占用内存数据

      总结:用存储空间换取处理器性能

    • 定期删除

      周期性轮询redis库中的时效型数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度

      特点:CPU性能占用设置有峰值,检测频度可自定义设置。内存压力不是很大,长期占用内存的数据会被持续清理。

    逐出算法

    当新数据进入redis时,如果内存不足怎么办?

    Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足。如果内存不满足新加入数据的最低存储要求,redis要临时删除一些数据为当前指令清理清理存储空间。清理数据的策略称为逐出算法。

    注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行。当对所有数据尝试完毕后,如果不能达到内存清理的要求,将报OOM错误。

    影响数据逐出的相关配置

  • 相关阅读:
    C#和SqlServer中处理时间格式问题
    ReadOnly之后获取文本框的值
    asp.net给Reaper和GridView添加序号
    SQL点滴31—SQL语句中@@IDENTITY和@@ROWCOUNT区别
    asp.net获取服务器信息
    Repeater嵌套
    开博说明 拓荒者
    Git的深入理解与GitHub托管服务的使用
    Hadoop学习笔记一:单节点安装
    VirtualBox克隆后无法找到网卡的问题
  • 原文地址:https://www.cnblogs.com/lee0527/p/12253590.html
Copyright © 2011-2022 走看看