Sliding Window Log Algorithm
def sliding_window_log(user_id, limit=100, window=3600):
now = time.time()
key = f"requests:{user_id}"
# ์ด์ ์์ฒญ ๊ธฐ๋ก ์ ๋ฆฌ
redis.zremrangebyscore(key, 0, now - window)
# ํ์ฌ ์์ฒญ ์ ํ์ธ
request_count = redis.zcard(key)
if request_count < limit:
redis.zadd(key, {str(uuid.uuid4()): now})
redis.expire(key, window)
return True
return False