扫描并删除Redis实例的过期Key 约束与限制 只有Redis 4.0及以上版本实例支持过期key扫描。 DCS不支持查询已释放的过期Key。 过期key扫描在主节点上执行,会对实例性能有一定的影响。 执行过期key扫描会占用CPU,建议在业务低峰时段执行过期Key扫描,降低CPU被用满的可能。 扫描并删除Redis实例的过期Key 步骤 1 登录分布式缓存服务管理控制台。 步骤 2 在管理控制台左上角单击 ,选择实例所在的区域。 步骤 3 单击左侧菜单栏的“缓存管理”,进入实例信息页面。 步骤 4 单击需要缓存分析的Redis实例名称,进入该实例的基本信息页面。 步骤 5 选择“分析与诊断 > 缓存分析”,进入缓存分析页面。 步骤 6 在“过期key扫描”页签下,可以执行过期key扫描释放掉过期的key。 过期key扫描会对键空间进行Redis的scan扫描,释放内存中已过期但是由于惰性删除机制而没有释放的内存空间。 单击“立即分析”,可立即按照DCS内部配置的扫描参数(迭代扫描key数量:100个,扫描超时时间:360分)对实例执行手动过期key扫描。 开启“自动扫描”,通过设置定时任务,到设定时间将会执行自动扫描。自动扫描的配置说明请参考下表和自动扫描性能说明和配置建议。 表 自动扫描配置参数 参数名称 参数说明 首次扫描时间 设定的第一次扫描时间,须设定在当前时间之后。 取值格式:YYYY/MM/DD hh:mm:ss 扫描间隔 从首次扫描时间开始,每隔一个时间间隔,便启动一次扫描。 如果到达启动时刻,上一次扫描还未结束,则本次轮空。 启动扫描的时间有五分钟冗余量,即超过本次启动时刻,不足五分钟,仍然会启动,不至于轮空。 连续扫描可能使CPU占用率较高,建议根据实例中key总量以及key增长情况来配置,可参考自动扫描性能说明和配置建议。 取值范围:0~43,200 默认值:1440 单位:分 扫描超时 此参数的目的在于避免因不可知原因造成的扫描超时,导致后面的定时任务无法执行。设定此参数,超过超时时间后,返回失败,以便能继续进行下一轮扫描。 超时时间不少于扫描间隔时间的2倍。 可根据每次过期key扫描的时间,以及使用场景所能承受的最大超时时间,设定一个经验值。 取值范围:1~86,400 默认值:2880 单位:分 迭代扫描key数量 SCAN命令用于迭代当前数据库中的key集合。 COUNT选项的作用就是让用户告知迭代命令, 在每次迭代中应该从数据集里返回多少元素。具体参见scan命令介绍。迭代式扫描可降低一次扫描过多key而造成扫描时间过长,影响redis性能的问题。 举例:redis中有1000万个key,迭代扫描key数量设为1000,则迭代10000次可完成全库扫描。 取值范围:10~1,000 默认值:50 单位:个 步骤 7 当过期key扫描任务提交后,每次过期key扫描都会生成一个任务记录,通过任务记录可以查看扫描的任务ID、状态、扫描方式、扫描开始和结束的时间。 扫描失败的两种情况: 出现异常导致扫描失败。 扫描超时导致失败,可能是key数量太多,未能在超时时间内扫描完,也会失败,但其实已经删除了部分key了。 结束