import redis.clients.jedis.Jedis;
import redis.clients.jedis.RateLimiter;
public class RedisRateLimiterExample {
public static void main(String[] args) {
// 连接到Redis服务器
Jedis jedis = new Jedis("localhost", 6379);
// 创建RateLimiter实例,并设置每秒允许的请求数为10
RateLimiter rateLimiter = jedis.rateLimiter("myRateLimiter", 10);
// 循环发送请求,并尝试获取许可证
for (int i = 0; i < 20; i++) {
// 尝试获取许可证,如果没有立即返回,会阻塞等待
if (rateLimiter.acquire(1)) {
System.out.println("Request allowed: " + i);
} else {
System.out.println("Request denied: " + i);
}
}
// 关闭Jedis连接
jedis.close();
}
}
这段代码展示了如何使用Redis的RateLimiter来实现限流。我们创建了一个名为myRateLimiter
的限流器,并设置了每秒允许通过的请求数为10。然后在一个循环中,我们尝试获取许可证来执行请求,如果没有获取到许可证,则表示请求被限流了。这个例子简单地在控制台输出了允许和拒绝的请求信息。