Redis-4 数据过期策略&数据淘汰策略

发布于:2024-05-09 ⋅ 阅读:(23) ⋅ 点赞:(0)
  • 数据过期策略

一.什么是数据过期策略?

redis会对key设置过期时间,当key过期后会对key按照不同的规则进行删除,这些删除规则就是数据过期策略。

二.redis中有哪些数据过期策略?

redis中有两种数据过期策略:惰性删除和定期删除。

1.惰性删除

(1)介绍:key过期后不去管它,当要用到该key时,会检查其是否过期,若过期则删除,若未过期则返回该key。

(2)优点:对cpu友好,无需浪费时间去检查当前未用到的key是否过期。

(3)缺点:对内存不友好,可能会有大量已过期且未被用到的数据堆积在内存。

2.定期删除

(1)介绍:每隔一段时间就对一定量的key进行检查,删除里面过期的key。

(2)定期删除有两种模式,对应不同的检查频率

  • slow模式:定时任务,执行频率默认为10hz(每秒10次),单次耗时不超过25ms。        
  • fast模式:执行频率不固定,但两次间隔不低于2ms,每次耗时不超过1ms。

执行耗时段的原因:尽量不影响主进程的工作。

redis的数据过期策略:惰性删除+定期删除两种策略配置使用。

  • 数据淘汰策略

一.什么是数据淘汰策略?

当redis中内存不足时,此时再向redis中添加新的key,redis会先采用某种规则将内存中原数据删除掉,再添加新数据,这种删除规则就是数据淘汰策略。

二.redis中有哪些数据淘汰策略?

redis中提供了8中数据淘汰策略:

1.noeviction:不淘汰任何的key,但内存已满时不允许再添加新数据,是默认策略。

2.volatile-ttl:对设置了过期时间的key,比较key的ttl剩余值,值越小越先被淘汰。

3.allkeys-random:对全体的key进行随机淘汰。

4.volatile-random:对设置了ttl的key进行随机淘汰。

5.allkeys-lru:对全体的key使用lru算法进行淘汰。

6.volatile-lru:对设置了ttl的key使用lru算法进行淘汰。

7.allkeys-lfu:对全体的key使用lfu算法进行淘汰。

8.volatile-lfu:对设置了ttl的key使用lfu算法进行淘汰。

(1)lru:Least Recently Used,最近最少用策略,当前时间减去最后一次访问时间,值越大越先被淘汰。

(2)lfu:Least Frequently Used,最少频率使用策略,统计访问频率,值越小越先被淘汰。

三.数据库有1000w数据,redis只能存20w数据,如何保证redis中存的都是热点数据?

使用allkeys-lru数据淘汰策略,留下的都是经常访问的热点数据。

四.redis的内存用完了会发生什么?

主要是看数据淘汰策略是什么,如果是使用了默认的noeviction策略,则会直接报错。


网站公告

今日签到

点亮在社区的每一天
去签到