使用java springboot 使用 Redis 作为限流工具
使用 Redis 作为限流工具
Redis 还可以用于实现限流功能,例如限制每个 IP 地址的访问次数。你可以使用 Redis 的计数器功能来实现这一点。
实现限流逻辑
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;
@Service
public class RateLimiter {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public boolean isAllowed(String key, int maxRequests, int timeWindowInSeconds) {
Long requestCount = redisTemplate.opsForValue().increment(key);
if (requestCount == 1) {
// 如果是第一次请求,设置过期时间
redisTemplate.expire(key, timeWindowInSeconds, TimeUnit.SECONDS);
}
return requestCount <= maxRequests;
}
}