Pentru a degreva baza de date relațională și a servi răspunsuri în sub 2 milisecunde, integrarea unui server Redis este soluția ideală. Pachetul oficial redis include modulul non-blocant redis.asyncio.
Conexiunea este inițializată în contextul lifespan al aplicației și injectată în rute prin Depends() pentru operațiuni ultra-rapide de tip await redis.setex(key, ttl, value) sau contoare atomice de rate limiting.
Exemplu: Caching cu expirare automată în Redis asincron
from fastapi import FastAPI, Depends
import redis.asyncio as aioredis
from typing import Annotated
app = FastAPI()
async def get_redis():
client = aioredis.from_url("redis://localhost:63379", decode_responses=True)
try:
yield client
finally:
await client.close()
@app.get("/cached-price/{symbol}")
async def get_price(symbol: str, redis: Annotated[aioredis.Redis, Depends(get_redis)]):
cache_key = f"stock:{symbol.upper()}"
cached_val = await redis.get(cache_key)
if cached_val:
return {"symbol": symbol, "price": float(cached_val), "source": "cache_redis"}
# Calculăm valoarea și o salvăm în Redis pentru 60 de secunde:
real_price = 145.50
await redis.setex(cache_key, 60, str(real_price))
return {"symbol": symbol, "price": real_price, "source": "database"}
Întrebări & Exemple de Cod:
Integrarea Redis Asincron (redis.asyncio) în FastAPIAi o nelămurire despre utilizarea comenzii
Integrarea Redis Asincron (redis.asyncio) în FastAPIsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.