首页 > 编程知识 正文

redis实现限流的三种方式,redis 分布式限流

时间:2023-05-06 00:17:34 阅读:257818 作者:2725

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

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

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。