|
群里发现部分人需要后端限制某个功能的频率
因此发一个利用【E2EE-通用缓存对象】开发的频率限制
原理:缓存记录每次访问时间,然后进行对比,如果需要精确到毫秒,请自行修改为13位时间戳之类的毫秒级时间
(有需要的也可以用Redis,原理和这个差不多,另外一种是递增次数,那个在高并发下可以减少内存占用)
使用方法:
1、先初始化,不需要持久化缓存就创建为内存缓存,把文件路径注释了
2、调用:频率限制_是否满足(“接口1“,“用户IP”,10,5)‘//注释:接口1限制每个IP在5秒内最多只能访问10次
如果真 (是否静态化 )文件路径 = 取运行目录 () + “/Data/Temp/AccessFrequency”返回 (集_频率限制缓存.创建内存缓存 (0, 64, 文件路径))|
频率限制_是否满足 | 逻辑型 | | |
场景 | 文本型 | | | | 主键唯一标识 | 文本型 | | | | 次数限制 | 整数型 | | | | 频率限制 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 列表 | 存取列表 | | | 最后一次访问时间 | 日期时间型 | | | 名称 | 文本型 | | |
名称 = 场景 + “-” + 主键唯一标识 集_频率限制缓存. 取列表 (名称, 列表 )判断 (列表. 取数量 () < 次数限制 ) 列表. 插入时间 (1, 取现行时间 ()) 列表. 删除 (次数限制 + 1, -1 )集_频率限制缓存. 置列表 (名称, 列表, 频率限制 )返回 (真)最后一次访问时间 = 列表. 取时间 (列表. 取数量 (), )判断 (取时间间隔 (取现行时间 (), 最后一次访问时间, #秒 ) < 频率限制 )返回 (假)列表. 插入时间 (1, 取现行时间 ()) 列表. 删除 (次数限制 + 1, -1 )集_频率限制缓存. 置列表 (名称, 列表, 频率限制 )返回 (真)
|
评分
-
查看全部评分
|