过期键的删除策略,redis服务器使用的是惰性删除和定期删除
1、定时删除,在设置键过期的同时,创建一个定时器,让键在过期时间来临之时,删除键
2、惰性删除,每次从数据库获取键的时候再去判断键是否过期
3、定期删除,每隔一段时间程序就对数据库进行一次检查,删除过期键
redis每隔100ms检查是否有过期的键,如果有就删除,每次检查会随机抽取key进行检查,可以通过配置文件属性hz设置,默认是10,即100ms检查一次。
rdb、AOF和复制功能对过期键的处理
rdb:如果服务器是主服务器,那么在载入rdb文件时,会对键进行过期检查,如果是从服务器,则不会
aof:aof在载入的时候不会删除过期键,过期的键被删除时,会向aof文件append一条del命令,来显示删除。aof文件重写时,会对过期的键进行删除。
复制:当服务运行在复制模式下,过期键的删除由主服务器负责,主服务器在删除一个过期键时,会显示的向所有从服务器发送del命令显示删除。
redis的淘汰策略
通过maxmemory设置最大内存大小,如果内存达到最大限定时,根据maxmemory-policy的值来决定具体的行为,取值如下
noeviction:不驱逐策略,只响应读命令
allkeys-lru:优先删除最近最少使用(less recently used)的key
volatile-lru:优先删除最近最少使用(less recently used)的key,只限于设置了expire的key
allkeys-random:随机删除key
volatile-random:随机删除key,只限于设置了expire的key
volatile-ttl(time to live):优先删除ttl最短的key,只限于设置了expire的key