MST
星途 面试题库

面试题:Redis滑动窗口限流中过期数据清理的基本原理是什么

请阐述在Redis滑动窗口限流场景下,过期数据清理的基本原理,以及通常使用Redis的哪些数据结构和命令来辅助实现?
43.5万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

过期数据清理基本原理

在Redis滑动窗口限流场景中,过期数据清理主要依赖Redis的过期键自动删除机制。当设置了键的过期时间后,Redis内部会维护一个过期字典,记录每个键的过期时间。在每次执行写命令或定期删除任务时,Redis会检查部分过期键,并删除已过期的键。同时,客户端在访问键时,如果发现键已过期,也会触发删除操作。

常用数据结构及命令

  1. 数据结构
    • 有序集合(Sorted Set):可以用来记录请求的时间戳,每个成员是时间戳,分值也可以设置为时间戳,这样可以方便地根据时间范围筛选出在滑动窗口内的请求。
    • 字符串(String):可用于记录当前窗口内的请求计数等简单信息。
  2. 命令
    • ZADD:用于向有序集合中添加成员及其分值,例如ZADD key score member,在限流场景中可以用来记录请求的时间戳。
    • ZREMRANGEBYSCORE:用于删除有序集合中指定分值范围内的成员,在滑动窗口限流中,可通过它删除滑动窗口之外过期的时间戳记录,比如ZREMRANGEBYSCORE key min max ,其中minmax是根据滑动窗口计算出来的时间戳边界值。
    • GET/SET/INCR:用于字符串类型操作。INCR可实现对请求计数的原子性增加,GET用于获取当前计数,SET可用于初始化计数等操作。