Redis 实现令牌桶 in Java

高并发, 通常考虑使用缓存来解决问题. 可是缓存也是有极限的, 因此, 即使使用的Redis, 一样会遇到瓶颈和问题.本文就在研究解决问题的一种方法, 基于Java来实现Redis的灵牌桶, 阻塞过多的请求.

了解解决问题的方法, 首先需要知道Redis的工作原理和什么是令牌桶算法.

Redis: 基于内存或者持久化的日志, key/value结构的数据库. Value支持类型: String, Hash, List, , sorted sets.支持多种语言, 本文主要以Java为例.

令牌桶算法: Token Bucket, 随着时间的流逝, 系统会按恒定的1/QPS时间间隔(如果QPS=100,则时间间隔是10ms) 往桶里加入Token(就像有个水龙头在不停的往桶里加水). 如果桶满了, 就停止加水. 每当新的请求来临时, 会各自拿走一个Token, 如果没有Token可以拿了, 就阻塞或者拒绝服务. 如下图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值