共计 504 个字符,预计需要花费 2 分钟才能阅读完成。
python代码示例
import time
import redis
r = redis.Redis(host='localhost', port=6379, db=1)
print(r)
def is_rate_limited(user_id, limit=5, window=360):
key = f"rate_limit:{user_id}"
current_time = int(time.time())
window_start = current_time - window
# 移除过期的请求记录
r.zremrangebyscore(key, '-inf', window_start)
# 获取当前窗口内的请求次数
request_count = r.zcard(key)
if request_count >= limit:
return False
# 记录当前请求
r.zadd(key, {current_time: current_time})
r.expire(key, window)
return True
# 示例调用
user_id = "user123"
if is_rate_limited(user_id):
print("请求通过")
else:
print("请求被限制")
正文完