今天客户咨询我们的产品是否具备类似Redis的数据老化机制?这是我从未考虑过的问题,借助客户的需求,我整理了一下,跟大家分享一下:
Redis是数据缓存产品,将所有的数据都是放在内存中,当然现有新版本的Redis也是具备持久化的机制的。既然是缓存数据,就存在时效性,即需要对Redis中的数据进行老化处理。目前了解到Redis数据老化的机制包含三种:
- 定时删除:在生成新的key时,自动生成一个时效周期,当时效周期到来时,就会将此条记录数据进行清理删除;
- 懒惰删除:顾名思义就是被动的触发,也就是应用来访问时,会首先检查是否过期,如果过期直接删除并返回。
- 定期删除:就是有两个触发因素,类似于定时任务,每多长时间清理1次,还有就是redis的使用内存超过最大内存时就会进行触发,进行删除老化数据。
关于Redis的数据老化机制是确保内存的使用效率,我们数据库产品就是关系型数据库,在此产品线中有关系型内存数据库产品,我们支持JOB,可以支持Redis第三种处理方式,即定期删除。不过,需要关注一点就是在时效性的字段上添加索引,提升查询和处理的效率,避免全表扫描,