偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

FastAPI + Redis 實(shí)戰(zhàn):一分鐘搞定高性能緩存方案

開(kāi)發(fā) 數(shù)據(jù)庫(kù)
本文帶你快速實(shí)戰(zhàn):FastAPI 如何優(yōu)雅接入 Redis 實(shí)現(xiàn)緩存與存儲(chǔ)!

在開(kāi)發(fā)高性能 Web 接口時(shí),我們常常面臨這樣的問(wèn)題:

  • 某些接口數(shù)據(jù)變化不頻繁,但訪問(wèn)量巨大;
  • 某些操作(如排行榜、用戶信息)計(jì)算/查詢代價(jià)高昂;
  • 數(shù)據(jù)庫(kù)訪問(wèn)壓力太大,接口響應(yīng)慢。

這時(shí)候,就輪到我們的大殺器——Redis 上場(chǎng)了。

本文帶你快速實(shí)戰(zhàn):FastAPI 如何優(yōu)雅接入 Redis 實(shí)現(xiàn)緩存與存儲(chǔ)!


使用場(chǎng)景:接口緩存

我們以一個(gè)用戶信息接口為例:根據(jù) user_id 返回用戶數(shù)據(jù),但用戶信息不常變動(dòng),可以緩存。

安裝依賴

pip install fastapi uvicorn redis

初始化 Redis 客戶端

我們使用官方推薦的異步庫(kù) redis-py 配合 asyncio 實(shí)現(xiàn)異步訪問(wèn)。

# redis_client.py
import redis.asyncio as redis

redis_client = redis.Redis(
    host="localhost",
    port=6379,
    decode_responses=True  # 返回字符串而非字節(jié)
)

接口代碼示例

# main.py
from fastapi import FastAPI, HTTPException
from redis_client import redis_client
import json

app = FastAPI()


# 模擬數(shù)據(jù)庫(kù)
fake_user_db = {
    "1": {"id": 1, "name": "Alice"},
    "2": {"id": 2, "name": "Bob"},
}


@app.get("/user/{user_id}")
async def get_user(user_id: str):
    cache_key = f"user:{user_id}"

    # 嘗試從 Redis 獲取緩存
    cached_data = await redis_client.get(cache_key)
    if cached_data:
        return {"source": "redis", "data": json.loads(cached_data)}

    # 模擬從數(shù)據(jù)庫(kù)查詢
    user = fake_user_db.get(user_id)
    if not user:
        raise HTTPException(status_code=404, detail="用戶不存在")

    # 緩存結(jié)果,設(shè)置過(guò)期時(shí)間 60 秒
    await redis_client.set(cache_key, json.dumps(user), ex=60)

    return {"source": "db", "data": user}

說(shuō)明:

  • Redis 作為緩存中間層:查詢接口先查 Redis,再查數(shù)據(jù)庫(kù)
  • 緩存數(shù)據(jù)使用 JSON 序列化存儲(chǔ)
  • 通過(guò) ex=60 設(shè)置緩存過(guò)期時(shí)間為 60 秒

Redis 的應(yīng)用價(jià)值

  • 降低數(shù)據(jù)庫(kù)訪問(wèn)壓力
  • 提升接口響應(yīng)速度(緩存命中幾乎毫秒級(jí))
  • 靈活設(shè)置過(guò)期時(shí)間,控制數(shù)據(jù)新鮮度

衍生應(yīng)用場(chǎng)景

  • 用戶會(huì)話 token 存儲(chǔ)
  • 短信驗(yàn)證碼防刷
  • 排行榜數(shù)據(jù)緩存
  • 秒殺庫(kù)存預(yù)扣減
  • 實(shí)現(xiàn)消息隊(duì)列、分布式鎖等

小結(jié)

Redis 作為緩存方案在 FastAPI 項(xiàng)目中非常簡(jiǎn)單易用,也非常高效。它能幫助你:

  • 提升接口性能;
  • 減輕數(shù)據(jù)庫(kù)壓力;
  • 實(shí)現(xiàn)更多靈活應(yīng)用場(chǎng)景(例如登錄狀態(tài)、驗(yàn)證碼、計(jì)數(shù)器等)。
責(zé)任編輯:趙寧寧 來(lái)源: Ssoul肥魚(yú)
相關(guān)推薦

2011-02-21 17:48:35

vsFTPd

2020-07-09 07:37:06

數(shù)據(jù)庫(kù)Redis工具

2018-03-27 09:28:33

緩存策略系統(tǒng)

2009-12-02 17:21:19

Cisco路由器配置

2017-03-30 19:28:26

HBase分布式數(shù)據(jù)

2017-02-21 13:00:27

LoadAverage負(fù)載Load

2018-07-31 16:10:51

Redo Undo數(shù)據(jù)庫(kù)數(shù)據(jù)

2020-05-21 19:46:19

區(qū)塊鏈數(shù)字貨幣比特幣

2022-07-18 06:16:07

單點(diǎn)登錄系統(tǒng)

2018-06-26 05:23:19

線程安全函數(shù)代碼

2017-07-06 08:12:02

索引查詢SQL

2016-09-12 17:28:45

云存儲(chǔ)應(yīng)用軟件存儲(chǔ)設(shè)備

2020-07-17 07:44:25

云計(jì)算邊緣計(jì)算IT

2018-12-12 22:51:24

Java包裝語(yǔ)言

2015-11-12 10:32:40

GitHub控制系統(tǒng)分布式

2016-12-16 11:05:00

分布式互斥線程

2021-08-06 08:50:45

加密貨幣比特幣區(qū)塊鏈

2013-11-15 07:24:50

4G LTE圖解

2020-06-11 08:04:12

WDMDWDMMWDM

2025-10-11 09:14:36

OSPF網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)