程序媛雪儿
Java后端
·2024-07-18
大家好,我是程序媛雪儿,今天不说晚安,说早上好,哈哈,今天我们唠唠redis数据删除策略。 一、惰性删除     设置key的过期时间,当需要该key,再检查是否过期,如果过期,就删掉,没过期,就返回(只有key过期才会检查) set name zhangsan 10 get name 优点:不会额外消耗cpu 缺点:大量过期的数据占了内存,未及时处理 二、定期删除 每隔一段时间,就对key进行检查(从一定数量的数据库抽取一定数量的key),并删除其中的过期key 两种模式 slow模式:默认是10hz,每次不超过25ms,可以通过修改redis.conf的hz选项来调整这个次数 fast模式:两次间隔不低于2ms,每次耗时不超过1ms 优点:可以通过限制操作删除的执行时长和频率来控制对cpu和内存的影响 缺点:难确定删除的执行时长和频率 Redis的过期删除策略:惰性删除 定期删除配合使用 三、内存淘汰机制(是上篇讲的) 8种策略,nginx.conf中的配置 maxmemory-policy noeviction #默认策略,不淘汰任何key,内存满了不允许写入新数据 volatile-lru:从设置了过期时间的数据集中挑选最近最少使用的数据淘汰。 allkeys-lru:从数据集中挑选最近最少使用的数据淘汰。 volatile-lfu:从设置了过期时间的数据集中挑选使用频率最低的数据淘汰。 allkeys-lfu:从数据集中挑选使用频率最低的数据淘汰。 volatile-random:从设置了过期时间的数据集中随机挑选数据淘汰。 allkeys-random:从数据集中随机挑选数据淘汰。 volatile-ttl:从设置了过期时间的数据集中挑选剩余生存时间最短的数据淘汰。 noeviction:禁止驱逐数据,新的写操作会报错。 还是推荐大家像我上篇文章那样,画个图图记这个知识点 其中,解释一下LRU和LFU算法 LRU(least recently used)最近最少使用,当前时间-最后访问时间,这个值越大越优先淘汰,换句话说就是淘汰最长时间没访问的 LFU (least frequently used ) 最少频率使用,会统计每个key的访问频率,值越小淘汰优先级越高     今天的知识碎片到这里就结束啦~咱们顺便唠唠嗑,我最近每天下班在健身房泡一个小时,跑步机30-40min,拉伸10min,练练背,玩玩哑铃做做力量训练,我觉得真的会很舒服,咱们不管是写代码还是实验室里搞研究,天天坐的时间太久了,能时不时舒展一下,是一件很棒的事情哦,之前雪儿经常肩膀痛,现在已经不痛啦,很推荐各位宝子试一下昂~ 欢迎大家关注我的微信公众号程序媛雪儿,雪儿会经常分享知识碎片和大家一起进步#知识碎片#
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP