本文介绍云数据库Tair(兼容 Redis)清除过期Key的默认策略以及快速清除过期Key的方法。
背景信息
若业务中数据存在过期策略,但实例中的Key数量远大于预估数量;或者实例在同一时间(时间段)过期大量Key,例如在1~2小时内过期数十万、百万Key,且该实例的Key数量与预估数量仍有较大差距,此时,您的实例中可能存在大量过期Key未被及时清理。
默认策略
云数据库Tair(兼容 Redis)存在以下三种自动清除过期Key的默认策略:
主动过期(定期清除):系统后台会周期性地检测,若发现已过期的Key,会将其清除。
被动过期(惰性清除):当用户访问某个Key时,若该Key已过期,系统会将其清除。
强制逐出:当Redis内存达到
Maxmemory
参数定义的上限时,将会引发操作阻塞或重要Key被逐出,甚至引发内存溢出(Out Of Memory),此时Redis的默认策略为volatile-lru
,更多信息请参见参数支持(maxmemory-policy
参数)。
以上策略均无需您进行手动操作。
快速清除过期Key
下文将介绍几种不同的快速清除过期Key的方法。
在控制台的实例详情页,使用清除数据功能,可快速清除该实例的所有过期key,更多信息请参见清除数据。
警告此方法清除速度最快,但短期内会增加实例的性能消耗,可能对线上业务造成影响,请谨慎执行或在业务低峰期执行。
调高
hz
参数(Redis后台执行清除过期Key的频率),更多信息请参见实现Redis定期任务执行频率的自动调整。重要该值越大,CPU资源消耗越多,请谨慎操作。
建议以10为阶梯,逐步增加该参数的值,并实时观察实例CPU的使用率,避免一次性调整过大造成CPU负载过高。
基于业务分析,为Key设置更合理的TTL过期策略,避免无用Key长期存储在数据库中。
相关文档
适用于
云数据库Tair(兼容 Redis)