面试题答案
一键面试1. String
- 应用方式:常用于基于时间窗口的简单限流。以固定时间窗口内允许的请求次数为值,以当前时间窗口的标识(如时间戳)为键。每次请求时,先获取当前窗口键对应的值(即已请求次数),若小于限制次数则递增该值,否则限流。例如,以每秒为时间窗口,限制每秒最多请求10次。键为当前秒的时间戳,值初始为0,每次请求值加1,当值达到10时限流。
- 优势:简单直观,操作便捷,读写性能极高,适合简单场景下的快速实现。
2. Hash
- 应用方式:适用于多维度限流。可以将不同维度作为Hash的字段,如用户ID、请求类型等,将对应维度的请求次数作为字段值。每次请求时,根据请求的维度信息更新对应的Hash字段值。例如,对于不同用户的不同请求类型分别限流,Hash的键可以是用户ID,字段为请求类型,值为该用户该请求类型的已请求次数。
- 优势:能灵活处理多维度信息,便于管理和统计不同维度下的限流情况,结构清晰,同时读写效率也较高。
3. Sorted Set
- 应用方式:可用于基于时间序列的限流,利用其按分数排序的特性。将请求时间作为分数,每个请求作为一个成员。通过计算特定时间范围内的成员数量来判断是否限流。例如,限制最近1分钟内请求次数不超过100次,可将每次请求的时间戳作为分数添加到Sorted Set中,通过计算当前时间前1分钟内的成员数量与100比较来决定是否限流。
- 优势:能够很好地处理时间序列相关的限流逻辑,可精确控制时间窗口内的请求数量,同时支持高效的范围查询。