我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis实现数据删除策略和逐出算法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redis实现数据删除策略和逐出算法

这篇文章将为大家详细讲解有关redis实现数据删除策略和逐出算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

数据存储和有效期

redis 工作流程中,过期的数据并不需要马上就要执行删除操作。因为这些删不删除只是一种状态表示,可以异步的去处理,在不忙的时候去把这些不紧急的删除操作做了,从而保证 redis 的高效

数据的存储

在redis中数据的存储不仅仅需要保存数据本身还要保存数据的生命周期,也就是过期时间。在redis 中 数据的存储结构如下图:

redis实现数据删除策略和逐出算法

获取有效期

Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态

redis实现数据删除策略和逐出算法

删除策略

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

定时删除

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

优点

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

缺点

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

总结

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

惰性删除

数据到达过期时间,不做处理。等下次访问该数据,如果未过期,返回数据。发现已经过期,删除,返回不存在。这样每次读写数据都需要检测数据是否已经到达过期时间。也就是惰性删除总是在数据的读写时发生的。

expireIfNeeded函数

对所有的读写命令进行检查,检查操作的对象是否过期。过期就删除返回过期,不过期就什么也不做~。

执行数据写入过程中,首先通过expireIfNeeded函数对写入的key进行过期判断。


robj *lookupKeyWrite(redisDb *db, robj *key) {

 // 删除过期键
 expireIfNeeded(db,key);

 // 查找并返回 key 的值对象
 return lookupKey(db,key);
}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis实现数据删除策略和逐出算法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis 数据删除策略和逐出算法

数据存储和有效期在 redis 工作流程中,过期的数据并不需要马上就要执行删除操作。因为这些删不删除只是一种状态表示,可以异步的去处理,在不忙的时候去把这些不紧急的删除操作做了,从而保证 redis 的高效数据的存储在redis中数据的存储不仅仅需要保存数据
redis 数据删除策略和逐出算法
2016-04-17

Redis删除策略的三种方法及逐出算法

这篇文章主要介绍了Redis删除策略的三种方法及逐出算法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
2022-11-13

编程热搜

目录