6.12. 限流器(RateLimiter)

基于Redis的分布式限流器(RateLimiter)可以用来在分布式环境下现在请求方的调用频率。既适用于不同Redisson实例下的多线程限流,也适用于相同Redisson实例下的多线程限流。该算法不保证公平性。除了同步接口外,还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。

```javaRRateLimiter rateLimiter = redisson.getRateLimiter(“myRateLimiter”);// 初始化// 最大流速 = 每1秒钟产生10个令牌rateLimiter.trySetRate(RateType.OVERALL, 10, 1, RateIntervalUnit.SECONDS);

CountDownLatch latch = new CountDownLatch(2);limiter.acquire(3);// …

Thread t = new Thread(() -> { limiter.acquire(2); // …});