Redis之key的过期策略

1.前言

redis作为一种非关系性数据库,常用来做缓存,不妨来了解下其key的过期策略。

过期字典:reids将所有过期的键值都放在一个字典中,而这个字典就叫做过期字典。

键空间:服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中redisDb结构的dict字典保存了数据库中的所有键值对,将这个字典称为键空间。

2.过期策略

策略 概述
定期删除

每隔一段时间就对一些key进行检查,然后删除这些过期的key。其有两种模式:

slow模式:定时执任务,默认执行频率10hz(10次/s),每次不超过25ms

fast模式:执行频率不固定,但两次间隔的时间不低于2ms,每次耗时不超过1ms

惰性删除 服务端不主动删除,当客户端在获取某个 key时,redis 会检查一下这个key是否过期?如果过期就会删除并返回null

当然,默认采用的是 定期删除+惰性删除。即使如此,还是会出现一种情况,若定期删除漏掉了很多过期key,而客户端又没有去获取这些key,那么这些大量的过期key就会造成内存耗尽,岂不是凉凉?

不怕,此时reids会走内存淘汰机制。目前最常用的是allkeys-lru,当内存不足以容纳新写入数据时,从键空间中移除最近最少使用的 key。

posted @ 2022-06-22 17:05  钟小嘿  阅读(468)  评论(0编辑  收藏  举报