Redis 限流 - 简单限流

版权归原作者所有。 本文最后更新于:2023年12月5日 凌晨

简单限流

使用reids解决一个限流问题

指定用户的一个操作行为,在特定时间内period(一段时间,时间段)只允许仿生最多的次数MaxCount

解决方案

声明一个方法,参数 key value period maxCount

key 为 用户id+操作行为标识 “userId:actionFlag”

value 取对应时间戳即可(节省内存空间)

一分钟内只能回复5次帖子

period 为 60s

maxCount 为 5 次

使用zset实现,伪代码:

zadd key value nowTimeMs   // 添加数据到队列中
zremrangeByScore(key, 0, nowTimeMs - 60 * 1000) // 时间窗口为当前时间-60为开始时间,结束时间为当前时间, 然后每次都要删除 时间窗口之外的队列元素,有序集合中就只剩余 时间窗口内元素
count = zcard key // 查询当前key下集合的元素个数
count >= maxCount  //  这个时候,返回true则代表 该提示 回复频繁,false 则不提示,继续流程

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明蚁点博客出处!