目前有一个功能是 界面可以填写每多少分钟限制多少次展示
这两个都是可以随意设置的,也就说界面可以随时修改这个值,得保证数据结构支持这种操作
目前能想到的结构是:

我有点担心如果分钟太多的话,性能会不会比较差
所以有别的数据结构和算法来解决这个问题么?
1
dapang1221 2024-11-14 14:46:09 +08:00
哎这不就是滑动窗口限流,可以试试 zset
|
2
lesismal 2024-11-14 14:49:01 +08:00
lua 成熟的实现应该挺多的,golang 里这个就可以,拿去用你的语言调用就可以了:
https://github.com/go-redis/redis_rate/blob/v10/lua.go |
3
chenfang OP @dapang1221 感谢 我去查查
|
5
wh469012917 2024-11-14 18:03:44 +08:00
setEx(key, value, expires)
key:任务 id value:次数 expires:分钟数 |
6
crysislinux 2024-11-14 18:33:51 +08:00
简单的就是 5 楼说的,性能也很高。缺点就是严格来说并不满足每分钟多少这个条件。
要时间轴上任意截一分钟都满足需求,那就得滑动窗口。 |
7
sssjjjjj 2024-11-15 09:53:50 +08:00
java 的话可以看看 redisson 里的 rateLimiter
|
8
awsl2333 363 天前
zset 就行了吧,简单直接
|