Redis 中的过期删除策略是指在键(key)上设置了过期时间后,Redis 在某个条件触发时会自动删除过期的键。
Redis 中有两种过期删除策略:
- 定期删除策略(定时任务方式):Redis 会定期地(默认每秒钟检查 10 次)随机抽取一部分设置了过期时间的键,检查它们是否过期,如果过期则删除。该策略可以通过配置文件中的 hz 参数进行调整。
- 惰性删除策略(懒汉式方式):当访问一个键时,Redis 会先检查该键是否过期,如果过期则删除。这意味着过期键可能会在访问时被删除,而不是在过期时立即删除。
Redis 定期删除策略并不会遍历删除每个过期键,而是采用随机抽取的方式删除过期键,同时为了保证过期扫描不影响 Redis 主业务,Redis 的定期删除策略中还提供了最大执行时间,以保证 Redis 正常并高效的运行。
关于“hz”
在 Redis 中,"hz" 是 "hertz" 的缩写。Hertz 是国际单位制中表示频率的单位,表示每秒钟发生的周期数或事件发生的次数。在 Redis 中,"hz" 参数用于表示每秒钟执行定期删除策略的次数,即每秒钟检查过期键的频率。 默认 hz 配置如下图所示: 可以编辑 Redis 的配置文件 redis.conf,找到并修改以下参数来调整定期删除策略:
hz <value>
默认情况下,hz 参数的值为 10,表示每秒钟进行 10 次检查。可以根据需要增加或减少该值来调整定期删除的频率。例如,将 hz 的值设置为 5,表示每秒钟进行 5 次检查。
修改完成后,保存配置文件并重启 Redis 服务器使配置生效。
特殊说明
以上内容来自我的《Java 面试突击训练营》,这门课程是有着十几年工作经验(前 360 开发工程师),10 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课。学完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,并且课程配备了 9 大就业服务,帮助上千人找到 Java 工作,其中上百人拿到大厂 Offer,学员最高薪资 70W 年薪,面试课目录和 9 大服务如下:
加我微信咨询:vipStone【备注:训练营】