当前位置: 首页 > news >正文

分布式锁升级redi还有zset滑动窗口 6月11日还有6月12日

1.分布式锁
之前用的是redis的set NX EX 手动设了一个过期时间但是存在自动续期问题比如
解锁
A线程拿到锁执行业务
但是业务还没执行完就自动解锁
B拿到锁执行业务
AB并发执行
A执行完直接删除B的锁(Lua脚本有效解决先比较value值相同才删)
但是AB并发问题无法解决所以引入了redisson的watchdog
Rlock lock=new RedissonClient();
try{
lock.trylock(3,-1,key) //拿锁没拿到等待3秒再拿,-1代表开启看门狗
}
catch(Execption e){
Throw Exception(e);
}
finnally{
if(lock.isHeldCurrentThread()) //判断是否是当前线程
{
lock.unlock;
}
}

2.ZSET滑动窗口限流
原理:ZSET集合有一个score score用于存时间戳用来做范围查询 ZCARD查询一个窗口内的元素数量判断请求书是否超出最大请求数
我是用自定义注解加上AOP切面来实现的
1.自定义了一个注解@RateLimit
其中包括四个属性
{
key()
window_time()
max_request()
UserIdArgs()
}
然后这个注解放到Controller的api接口上传入这四个参数
然后AOP切面做了一个获取参数的操作
resolveArgs()方法
通过反射的方式去获取切入点的MethodSignature
通过signature获取参数parameters数组
还有args数组
遍历parameters数组
通过getAnotation判断第一个值是不是RequstParam注解然后在判断参数名是不是传入的参数名
同理通过getAnotation判断第一个值是不是PathParam注解然后在判断参数名是不是传入的参数名
把parademeters数组遍历完 但是有个问题就是一定在注解里显示写出来
然后获取到参数名后组成key执行Lua脚本
Lua脚本主要做的就是
先删除窗口外的所有值用zremrangebyscore 并且算出来窗户口的额左边界值让删除的判定是小于这个左边界值 redis.call('zremrangebyscore', key,'-inf', '('.. min_time)
然后zcard计数当前窗口的请求数如果当前数量为4(我设置的最大请求数是5)此时小于最大请求数就返回4 如果此时请求数量为5那么返回的就是6就是当前是第几个请求
这样在count判断中只用>max_request即可
如果大于就抛业务异常请求过于频繁
如果不大于就继续执行切点方法 return JoinPoint.proceed();

http://www.jsqmd.com/news/1001411/

相关文章:

  • PowerPC处理器技术演进:从G1到G6的架构设计与嵌入式应用解析
  • 别再为Halcon和VisionPro图像转换头疼了!C#实战代码分享(含灰度/彩色图完整方案)
  • 嵌入式开发如何通过SBC方案加速产品上市:以飞思卡尔QorIQ为例
  • 无锡GEO优化怎么选?TOP3服务商实力排行+FAQ全解 - wxxwlm
  • 三月七小助手:从重复劳动到智能陪伴的游戏体验革新
  • i.MX53开发板实战:从ARM Cortex-A8入门到嵌入式Linux应用开发
  • 从NeRF的‘慢’到Instant-NGP的‘快’:多分辨率哈希编码如何成为神经渲染的加速器
  • 2026 南宁润滑油、液压油、齿轮油、黄油批发商家综合实力排行榜(权威测评版) - 星际AI
  • 2026西安沙发翻新换皮换布上门服务哪家靠谱?匠阁/御匠/锦修/优势推荐指南 - 我叫一
  • 2026 年 6 月|济南GEO优化服务商盘点:GEO战略价值与主流服务商深度对比 - 外贸老黄
  • Multi-Node LLM Serving-vLLM+Ray(Docker)
  • 2026重庆沙发翻新换皮换布上门服务哪家靠谱?匠阁/御匠/锦修/优势推荐指南 - 我叫一
  • 基于i.MX 6 SABRE平台的汽车信息娱乐系统开发实战指南
  • 2026指南:防静电泡沫制造企业实力解构——EPE/导电海绵/包装内衬防静电方案专业之选 - 品牌发掘
  • 舒扬|四川华锐净化工程有限公司 个人简介 - 哈尺大哥
  • MCF51QW256嵌入式MCU硬件加密与低功耗设计实战解析
  • 2026年GEO源头厂商深度横向评测:杭州爱搜索技术壁垒与选型指南 - 品牌报告
  • 2026年泡沫箱厂家推荐榜单:EPS泡沫/泡沫托/异形泡沫盒/防静电泡沫/快递泡沫箱/定制泡沫箱源头实力工厂优选 - 品牌发掘
  • 2026武汉沙发翻新换皮换布上门服务哪家靠谱?匠阁/御匠/锦修/优势推荐指南 - 我叫一
  • 2026年保定财税公司全面对比,托管服务与价格优势分析! - 互联百晓生
  • 2026年净水器推荐排行榜:全屋净水/中央软水/别墅净水/新房装修净热一体机品牌深度指南 - 品牌发掘
  • 2026 广州新能源汽车音响改装双冠标杆:花都大明汽车音响 无损升级零影响整车质保实力领跑全行业 - 汽车音响改装
  • 如何让老旧电视焕发新生:MyTV-Android开源电视直播解决方案终极指南
  • 2026年洛阳快递泡沫箱厂家靠谱推荐:保温缓冲包装箱、防震泡沫箱、生鲜冷链专用箱优质源头工厂精选 - 品牌发掘
  • 2026无锡本地GEO优化哪家靠谱?行业深度测评+TOP3机构榜单 - wxxwlm
  • 工业吸尘器十大排名榜2026实测:史沃斯为何稳坐榜首? - 工业清洁测评社
  • Happy Island Designer:3个简单步骤打造你的终极岛屿规划工具
  • 2026年6月可靠的热流道厂家哪个好,电子外壳热流道/整体式热流道/家电热流道/塑胶模具热流道,热流道实力厂家哪家好 - 品牌推荐师
  • 寄大件怎么选物流最省钱?这份比价攻略请收好 - 快递物流资讯
  • 2026杭州沙发翻新换皮换布上门服务哪家靠谱?匠阁/御匠/锦修/优势推荐指南 - 我叫一