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错误。

    影响数据逐出的相关配置

  • 相关阅读:
    TextBox 只有下划线
    can't find web control library(web控件库)
    DropDownListSalesAC”有一个无效 SelectedValue,因为它不在项目列表中。
    IDE、SATA、SCSI、SAS、FC、SSD 硬盘类型
    如何打印1px表格
    CSS控制打印 分页
    Virtual Server could not open its emulated Ethernet switch driver. To fix this problem, reenable the Virtual Server Emulated Et
    Xml中SelectSingleNode方法中的xpath用法
    热带水果莫入冰箱?水果存放冰箱大法
    探索Asp.net的Postback机制
  • 原文地址:https://www.cnblogs.com/lee0527/p/12253590.html
Copyright © 2011-2022 走看看