请选择 进入手机版 | 继续访问电脑版

[Redis] 浅谈Redis缓存有哪些镌汰 策略

[复制链接]
查看112 | 回复9 | 2021-9-14 00:06:36 | 显示全部楼层 |阅读模式
目次

Redis过期策略

我们起首 来相识 一下Redis的内存镌汰 机制。

定时删除

概述
    redis默认是每隔 100ms 就随机抽取一些设置了过期时间的key,检查其是否过期,假如 过期就删除。留意 这里是随机抽取的。为什么要随机呢?你想一想假如 redis 存了几十万个 key ,每隔100ms就遍历全部 的设置过期时间的 key 的话,就会给 CPU 带来很大的负载!

长处

  • 保证内存被尽快开释

缺点

  • 若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间告急 的环境 下,CPU不能把全部 的时间用来做要紧的事儿,还必要 去花时间删除这些key。
  • 定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严肃

总结

用处理器性能换取存储空间 (拿时间换空间)

惰性删除

key过期的时间 不删除,每次从数据库获取key的时间 去检查是否过期,若过期,则删除,返回null。

长处

  • 删除操作只发生在从数据库取出key的时间 发生,而且只删除当前key,以是 对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步。

缺点

  • 若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,那么大概 发生内存走漏 (无用的垃圾占用了大量的内存)

总结

用存储空间换取处理器性能(拿空间换时间)

定期删除

假如 当前库中没有一个key设置了过期时间,直接实验 下一个库的遍历,随机获取一个设置了过期时间的key,检查该key是否过期,假如 过期,删除key,判断 定期删除操作是否已经达到指定时长,若已经达到,直接退出定期删除。(默认每个库检测20个key)

长处

  • 通过限定 删除操作的时长和频率,来减少删除操尴尬刁难 CPU时间的占用--处理"定时删除"的缺点 2)定期删除过期key--处理"惰性删除"的缺点。
  • 定期删除过期key--处理"惰性删除"的缺点。

缺点

  • 在内存友爱 方面,不如"定时删除"。
  • 在CPU时间友爱 方面,不如"惰性删除"。

Redis的内存镌汰 机制

简述
Redis有过期策略,假如你的Redis只能存1G的数据,你一个哀求 写入2G,而你也没有及时哀求 key,那么惰性删除就不见效 了,Redis占用内存就会越来越高。

Redis可以设置内存大小:

  1. # maxmemory <bytes>
  2. # 设置Redis最大占用内存大小为100
  3. maxmemory 100mb
复制代码

超过了这个内存大小,就会触发内存镌汰 机制,Redis有一个默认设置 ,这个是Redis的默认 内存镌汰 机制:

  1. # maxmemory-policy noeviction
复制代码

maxmemory-policy一共有8个值,当内存不足时:

  • noeviction: 不删除,直接返回报错信息。
  • allkeys-lru:移除最久未使用 (使用 频率最少)使用 的key。保举 使用 这种。
  • volatile-lru:在设置了过期时间key中,移除最久未使用 的key。
  • allkeys-random:随机移除某个key。
  • volatile-random:在设置了过期时间的key中,随机移除某个key。
  • volatile-ttl: 在设置了过期时间的key中,移除准备 过期的key。
  • allkeys-lfu:移除近来 最少使用 的key。
  • volatile-lfu:在设置了过期时间的key中,移除近来 最少使用 的key。

LRU和LFU的区别

LRU

LRU是近来 最少使用 页面置换算法(Least Recently Used),也就是起首 镌汰 最长时间未被使用 的页面!
比如有数据 1,1,1,2,2,3 此时缓存中已有(1,2) 当3加入的时间 ,得把前面的1镌汰 ,变成(3,2)

LFU

LFU是近来 最不常用页面置换算法(Least Frequently Used),也就是镌汰 肯定 时期内被访问次数最少的页!

比如有数据 1,1,1,2,2,3 缓存中有(1(3次),2(2次)) 当3加入的时间 ,得把后面的2镌汰 ,变成(1(3次),3(1次))

Redis重启怎样 恢复数据呢?

Redis启动前会先检查AOF文件,不存在才会去加载RDB文件,由于 AOF的数据完备 性高,最多也就丧失 1秒的数据。

总结

  • AOF恢复比较慢;RDB文件小,恢复快。
  • RDB是数据快照文件,AOF是下令 操作的日记 文件,追加写。

到此这篇关于浅谈Redis缓存有哪些镌汰 策略的文章就先容 到这了,更多相干 Redis缓存镌汰 策略内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 教风三应博 | 2021-9-17 02:39:33 | 显示全部楼层
这么版块的帖子越来越有深度了!
回复

使用道具 举报

avatar 卡卡西720 | 2021-9-29 22:20:32 | 显示全部楼层
青春不在了,青春痘还在!
回复

使用道具 举报

avatar 龙的传人739 | 2021-10-4 10:01:26 | 显示全部楼层
看了这么多帖子,第一次看到这么高质量内容!
回复

使用道具 举报

avatar 名人堂熊猫虞kk | 2021-10-6 02:05:32 | 显示全部楼层
顶顶更健康!
回复

使用道具 举报

avatar 天寿保健护理彰 | 2021-10-8 04:39:40 | 显示全部楼层
宇宙第一贴诞生了!
回复

使用道具 举报

骂人也是要有水平的!
回复

使用道具 举报

admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,运动刷步数还是免费刷的,QQ和微信都可以刷,特别好用。访问地址:http://yd.mxswl.com 猫先森网络
回复

使用道具 举报

admin楼主很有经验啊!
回复

使用道具 举报

avatar 球妈2017 | 昨天 19:51 | 显示全部楼层
楼上长在线啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则