可以使用Python的Redis库来实现这一功能。在FastAPI中,需要在应用启动时,初始化一个Redis客户端。
import redis
redis_client = redis.Redis(host='localhost', port=6379, db=0)
然后,在需要统计请求计数的API路由中,可以使用以下代码:
from fastapi import FastAPI
from fastapi.responses import PlainTextResponse
app = FastAPI()
@app.get("/count-ip-address")
async def count_ip_address(ip_address: str):
count = redis_client.get(ip_address)
if count is None:
count = 1
else:
count = int(count) + 1
redis_client.set(ip_address, count)
return PlainTextResponse(f"IP {ip_address} has been requested {count} times.")
在这段代码中,我们使用了Redis的get和set方法来获取和更新IP地址的请求计数。如果计数不存在,则默认为1;否则,将计数加1并设置回Redis。
需要注意的是,Redis的key应该使用具有唯一性的键值,例如IP地址等。此外,我们还可以设置key的过期时间,以便限制内存使用。可以使用Redis的EXPIRE或EXPIREAT命令来实现这一功能。
redis_client.expire(ip_address, 3600) # key过期时间为3600秒
在以上的代码中,key的过期时间设为1小时。这样,如果一个key在1小时内没有被访问,Redis会自动将其删除,从而释放内存。