前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis过期key的删除策略

Redis过期key的删除策略

作者头像
dys
发布2018-04-02 16:58:07
1.5K0
发布2018-04-02 16:58:07
举报
文章被收录于专栏:性能与架构性能与架构

key的过期时间都保存在过期字典中,如果一个键过期了,那么redis什么时候会被删除呢?

删除策略

(1)惰性删除

对key进行操作时才进行过期检查,对CPU最为友好,因为只有在不得不做的适合才进行操作,并且只涉及当前的目标key,与其他key无关,不浪费CPU资源

同样也有缺点,它对内存是最不友好的,如果一个键已经过期,那么只要以后没有对它进行操作,它所占用的内存就不会释放,当这样的key越来越多时,内存浪费就很严重了

Redis当执行任何读写命令时,先调用过期检查函数,如果此key过期,先执行删除操作,然后再进行当前命令的操作

(2)定期删除

每隔一段时间对数据库执行一次过期key检查,并通过对删除操作的执行时间和频率进行限制,来尽量减少对CPU的占用时间

定期删除有效降低了对内存的浪费,比较平衡的兼顾了CPU与内存

Redis有周期性系统操作函数,会分多次遍历服务器中的各个数据库,从数据库的expires字典中随机检查一部分键的过期时间,并删除其中的过期键

持久化过程对过期key的处理

(1)RDB方式

生成RDB文件时会检查key是否过期,过期的直接过滤掉,不进行保存操作

(2)AOF方式

在每个命令执行时都会检查key是否过期,如果过期,会显示调用删除key的命令,所以此命令也会被写入AOF文件

(3)AOF重写

和RDB方式的处理过程一样,会先检查key是否过期,过滤掉过期的key

主从复制过程对过期key的处理

(1)master中按照正常的删除策略执行

(2)slave的过期key删除由主服务器控制:

master执行过期key删除操作后,显式向slave发送删除命令,slave在收到删除命令之前,对过期key不做删除,如果收到客户端的命令请求,正常执行命令,收到删除命令后才进行删除

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档