查看: 242|回复: 0

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

[复制链接]
发表于 2020-2-3 00:33:07 | 显示全部楼层 |阅读模式
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错误。
影响数据逐出的相关配置

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表