失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【限流算法】java实现redis分布式时间窗口计数器算法

【限流算法】java实现redis分布式时间窗口计数器算法

时间:2021-05-31 10:15:57

相关推荐

【限流算法】java实现redis分布式时间窗口计数器算法

本文实现一种基于java的分布式固定时间窗口计数器算法

//每次请求进来,查询一下当前的计数值,如果超出请求数阈值,则拒绝请求,返回系统繁忙提示private long limitFlow(String key) {//Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。设置成功返回1,设置失败返回0Long lng = redisCacheClient.setnx(jedisGroup, key, "1");if (lng == 1) {//设置时间窗口,redis-key时效为10秒redisCacheClient.expire(jedisGroup, key, 10);return 1L;} else {//Redis Incrby 命令将 key 中储存的数字加上指定的增量值。相当于放在redis中的计数器,每次请求到来计数器自增1long val = redisCacheClient.incrBy(jedisGroup, key, 1);return val;}}

如果觉得《【限流算法】java实现redis分布式时间窗口计数器算法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。