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。
就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !