当前位置:网站首页>3种过期策略
3种过期策略
2022-07-29 01:58:00 【Meme_xp】
1.定时删除
含义:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除
优点:
保证内存被尽快释放
缺点:
1.若过期key很多,删除这些key会占用很多的CPU时间,在CPU时间紧张的情况下,CPU不能把所有的时间用来做要紧的事儿,还需要去花时间删除这些key
2.定时器的创建耗时,若为每一个设置过期时间的key创建一个定时器(将会有大量的定时器产生),性能影响严重
3.没人用
2.惰性删除
含义:
key过期的时候不删除,每次从数据库获取key的时候去检查是否过期,若过期,则删除,返回null。
优点:
删除操作只发生在从数据库取出key的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步(如果此时还不删除的话,我们就会获取到了已经过期的key了)
缺点:
若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,那么可能发生内存泄露(无用的垃圾占用了大量的内存)
定期删除
含义:
每隔一段时间执行一次删除(在redis.conf配置文件设置hz,1s刷新的频率)过期key操作
优点:
1.通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用–处理"定时删除"的缺点
2.定期删除过期key–处理"惰性删除"的缺点
缺点
1.在内存友好方面,不如"定时删除"
2.在CPU时间友好方面,不如"惰性删除"
难点
合理设置删除操作的执行时长(每次删除执行多长时间)和执行频率(每隔多长时间做一次删除)(这个要根据服务器运行情况来定了)
看完上面三种策略后可以得出以下结论:
1.定时删除和定期删除为主动删除:Redis会定期主动淘汰一批已过去的key
2.惰性删除为被动删除:用到的时候才会去检验key是不是已过期,过期就删除
3.惰性删除为redis服务器内置策略
定期删除可以通过:
第一、配置redis.conf 的hz选项,默认为10 (即1秒执行10次,100ms一次,值越大说明刷新频率越快,最Redis性能损耗也越大)
第二、配置redis.conf的maxmemory最大值,当已用内存超过maxmemory限定时,就会触发主动清理策略
边栏推荐
- Derivation of Euler angle differential equation
- Jmeter之BeanShell生成MD5加密数据写入数据库
- 响应式织梦模板家装装饰类网站
- Excel 打开包含汉字的 csv 文件出现乱码该怎么办?
- Eight practical new functions of es2022
- Time pit in MySQL driver
- Hexadecimal to string
- Responsive dream weaving template outdoor camping website
- Prometheus + alertmanager message alert
- C language improvement (I)
猜你喜欢

The outsourcing company "mixed" for two years, and I only did five things seriously. Now I get byte offer smoothly.

DevOps 团队如何抵御 API 攻击?

Responsive dream weaving template home decoration website

聊聊接口性能优化的11个小技巧

Data security and privacy computing summit - development and application of security intersection in privacy Computing: Learning

Never pass a request to an asynchronous thread. There is a hole

进程间通信---对管道的详细讲解(图文案例讲解)

Esbuild Bundler HMR

防止勒索软件攻击数据的十种方法

How to quickly design a set of cross end components that support rendering rich text content
随机推荐
[one · data | chained binary tree]
[golang learning notes 2.2] map, structure and interface
3D模型格式全解|含RVT、3DS、DWG、FBX、IFC、OSGB、OBJ等70余种
Altium designer outputs Gerber and other production documents
Talk about the implementation principle of feign
ES2022 的 8 个实用的新功能
[cloud native and 5g] micro services support 5g core network
Prevent repeated clicks
【质量】代码质量评价标准
工程经济学知识点总结
Responsive dream weaving template hotel room website
一文理解分布式开发中的服务治理
详解JS的四种异步解决方案:回调函数、Promise、Generator、async/await
Explain asynchronous tasks in detail: task status and lifecycle management
How to use RPA to achieve automatic customer acquisition?
Three methods of STM32 delay function
Virsh console connection failure
如何快速设计一套支持渲染富文本内容的跨端组件
Resnet50 + k-fold cross validation + data enhancement + drawing (accuracy, recall, F value)
Esbuild Bundler HMR