Redis数据的过期策略及内存淘汰策略

过期策略

1:定时删除

在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除

优点:

1.保证内存尽快被释放

缺点:

1.若过期key过多,删除这些key会占用过多的CPU时间
2.定时器的创建耗时,若为每一个设置过期的key创建一个定时器(产生大量定时器),性能影响严重

2:惰性删除

每次获取key的时候检查是否过期,如果过期,删除之,返回null

优点:

1.删除操作发生在从数据库中取出key的时候,而且只删除当前key,所以对CPU的占用时间比较少

缺点:

1.对于使用频率不高的那些key,无法做到删除,积累大量数据之后,就可能会发生内存泄漏

3:定期删除

每隔一段时间执行一次删除过期key的操作

优点:

1.通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用
2.定期删除过期的key

缺点:

1.在内存友好方面,不如定时删除
2.在CPU时间方面,不如惰性删除
3.删除操作的执行时长和执行频率比较难以设定

内存淘汰策略

Redis的内存淘汰策略指的是在Redis用于缓存的内存不足的时候,怎么处理需要新写入且需要申请额外空间的数据:
1:noeviction:当内存不足以容纳新写入的数据时候,新写入数据会报错(一般没人这么用);
2:allkeys-lru:当内存不足以容纳新写入的数据的时候,在键空间中,移除最近最少使用的key(比较正常的做法);
3:allkeys-random:当内存不足以容纳新写入的数据时,在键空间中,随机移除某个key(。。。);
4:volatie-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(比较正常的做法);
5:volatile-random:当内存不足以容纳新写入的数据时候,在设置了过期时间的键空间中,随机移除某个key;
6:volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除;
在这里插入图片描述

RDB对过期key的处理

过期key可以说对RDB没有任何影响
1:从内存数据库持久化到RDB文件
持久化之前,会检查是否过期,过期的key不进入RDB文件
2:从RDB文件恢复数据到内存数据库
数据载入数据库之前,会对key进行过期检查,如果过期,不导入数据库

AOF对过期key的处理

过期key对AOF没有任何影响
1:从内存数据库持久化到AOF文件:
当key过期后,还没有被删除,此时进行执行持久化操作
当key过期后,在发生删除操作时,程序会向aof追加一条del命令
2:AOF重写
重写时,会先判断key是否过期,已过期的key不会重写到aof文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值