栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis之数据删除策略与淘汰策略

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis之数据删除策略与淘汰策略

数据删除与淘汰策略 1、过期数据概念与存储结构
  • 内存中数据的状态
    • 通过TTL指令获取
    • XX:具有时效性的数据
    • -1:永久有效的数据
    • -2:已经过期的数据或被删除的数据或未定义的数据

注:过期的数据不一定被删除了

  • 时效性数据的存储结构

    在redis存储空间中,有一个expires区域,将数据的地址作为field,将数据的过期时间作为value

  • 数据删除策略

    • 定时删除
    • 惰性删除
    • 定期删除

注:数据删除策略的目标并不是真正的删除数据,而是在内存占用和cup占用之间寻找一种平衡。

2、定时删除与惰性删除
  • 定时删除

    创建一个定时器,当key的过期时间到达时,立即执行对键的删除操作

优点:节约内存

缺点:cpu压力大

  • 惰性删除

    数据到达过期时间后,不立即删除.等下次访问该数据时,再删除.

优点:节约cpu性能

缺点:内存压力大

3、定期删除
  • redis存储空间

  • 定期删除过程解释

    redis会顺序的对16个expires进行检测。对某个expires检测时,随机挑选w个key检测是否超时。如果超时,删除key。如果一轮中删除的**key的数量>w乘以25%,循环该过程。如果一轮中删除的key的数量<**w*25%,检测下一个expires。

  • 定期删除原理

    • 读server.hz的值,确定每次检测多久。
    • durrent_db:记录执行到了哪个expires位置
  • 删除策略对比

4、淘汰策略
  • 使用淘汰策略场景

新数据进入redis时,内存空间不足

  • 怎么判断内存空间剩余大小呢?

    redis在执行每个命令前,会调用freeMemoryIfNeeded()检测内存空间是否充足。

  • 逐出算法

    及清理数据的策略。该过程并不是100%能清理出足够可用的内存空间,如果不成功,则反复执行。如果全部数据都尝试完毕,则会返回错误信息。

  • 那么,如何确定该删除哪些数据呢?

    通过配置:maxmemory-policy XXX

    XXX可选:

    • volatile-lru:淘汰最久没有访问的数据
    • volatile-lfu:淘汰最少访问的数据
    • volatile-ttl:淘汰将要过期的数据
    • volatile-random:任意选择淘汰

注:这是expires里面的淘汰策略

检索全库数据:

放弃数据驱逐(淘汰)配置:no-enviction

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号