"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ذاكرة التخزين المؤقت في Fastapi: قم بتشغيل التطوير عالي الأداء

ذاكرة التخزين المؤقت في Fastapi: قم بتشغيل التطوير عالي الأداء

نشر في 2025-04-17
تصفح:278

في عالم اليوم الرقمي ، كل إجراء - سواء كان يتم تمريره على تطبيق المواعدة أو إكمال عملية شراء - على واجهات برمجة التطبيقات التي تعمل بكفاءة وراء الكواليس. كمطورين خلفيين ، نعلم أن كل ميلي ثانية تهم. ولكن كيف يمكننا أن نجعل واجهات برمجة التطبيقات تستجيب بشكل أسرع؟ الإجابة تكمن في التخزين المؤقت.

التخزين المؤقت هو تقنية تخزن البيانات التي يتم الوصول إليها بشكل متكرر في الذاكرة ، مما يسمح لبرامج واجهات برمجة التطبيقات بالاستجابة على الفور بدلاً من الاستعلام عن قاعدة بيانات أبطأ في كل مرة. فكر في الأمر مثل الاحتفاظ بالمكونات الرئيسية (الملح والفلفل والزيت) على كونترتوب المطبخ الخاص بك بدلاً من جلبها من المخزن في كل مرة تطبخ فيها - وهذا يوفر الوقت ويجعل العملية أكثر كفاءة. وبالمثل ، فإن التخزين المؤقت يقلل من أوقات استجابة API عن طريق تخزين البيانات المطلوبة بشكل شائع في بقعة سريعة يمكن الوصول إليها ، مثل redis.

يجب تثبيت المكتبات المطلوبة

للتواصل مع Redis Cache مع Fastapi ، نطلب أن تكون المكتبات التالية مثبتة مسبقًا.

pip install fastapi uvicorn aiocache pydantic

Pydantic هو إنشاء جداول وهياكل قاعدة البيانات. سوف Aiocache القيام بعمليات غير متزامنة على ذاكرة التخزين المؤقت. Uvicorn مسؤول عن تشغيل الخادم.

redis إعداد والتحقق:

إعداد redis مباشرة في نظام Windows غير ممكن في هذا المرحلة. لذلك ، يجب إعداده وتشغيله في نظام Windows الفرعي لـ Linux. ترد أدناه تعليمات لتثبيت WSL أدناه

Caching in FastAPI: Unlocking High-Performance Development:

تثبيت WSL | Microsoft تعلم

قم بتثبيت نظام Windows الفرعي لـ Linux باستخدام الأمر ، WSL -مثبت. استخدم محطة Bash على جهاز Windows الذي يتم تشغيله بواسطة توزيع Linux المفضل لديك - Ubuntu و Debian و Suse و Kali و Fedora و Pengwin و Alpine والمزيد.

Learn.microsoft.com

بعد تثبيت WSL ، هناك حاجة إلى الأوامر التالية لتثبيت redis

sudo apt update
sudo apt install redis-server
sudo systemctl start redis

لاختبار اتصال خادم Redis ، يتم استخدام الأمر التالي

redis-cli

بعد هذا الأمر ، سيتم الدخول في محطة افتراضية للمنفذ 6379. في تلك المحطة ، يمكن كتابة أوامر redis.

إعداد تطبيق fastapi

] سوف نستخدم redis لتخزين الاستجابات المخزنة مؤقتًا.

الخطوة 1: تحديد نموذج Pydantic لبيانات المستخدم

سنستخدم Pydantic لتحديد نموذج المستخدم الخاص بنا ، والذي يمثل بنية استجابة API.


من Pydantic Import Basemodel مستخدم الفئة (Basemodel): معرف: int الاسم: شارع البريد الإلكتروني: str العمر: int
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str
    age: int
الخطوة 2: إنشاء ديكور التخزين المؤقت

لتجنب تكرار منطق التخزين المؤقت لكل نقطة نهاية ، سنقوم بإنشاء ديكور تخزين مؤقت قابل لإعادة الاستخدام باستخدام مكتبة Aiocache. سيحاول هذا الديكور استرداد الاستجابة من redis قبل استدعاء الوظيفة الفعلية.


استيراد JSON من لفائف استيراد functools من ذاكرة التخزين المؤقت للاستيراد Aiocache من fastapi استيراد httpexception def cache_response (ttl: int = 60 ، مساحة الاسم: str = "main"): "" " التخزين المؤقت للديكور لنقاط النهاية fastapi. TTL: حان الوقت للعيش في ذاكرة التخزين المؤقت في ثوان. مساحة الاسم: مساحة الاسم لمفاتيح ذاكرة التخزين المؤقت في Redis. "" " ديكور ديكور (FUNC): @wraps (func) غلاف Def Async (*args ، ** kwargs): user_id = kwargs.get ('user_id') أو args [0] # على افتراض أن معرف المستخدم هو الوسيطة الأولى cache_key = f "{namepace}: user: {user_id}" Cache = cache.redis (Endpoint = "LocalHost" ، Port = 6379 ، مساحة الاسم = مساحة الاسم) # حاول استرداد البيانات من ذاكرة التخزين المؤقت cached_value = انتظر cache.get (cache_key) إذا كان cached_value: إرجاع json.loads (cached_value) # إرجاع البيانات المخزولة # اتصل بالوظيفة الفعلية إذا لم يتم ضرب ذاكرة التخزين المؤقت الرد = في انتظار func (*args ، ** kwargs) يحاول: # تخزين الاستجابة في redis مع TTL Await Cache.set (cache_key ، json.dumps (استجابة) ، ttl = ttl) باستثناء استثناء كـ e: رفع httpexception (status_code = 500 ، التفاصيل = f "بيانات التخزين المؤقت للخطأ: {e}") استجابة العودة إرجاع غلاف ديكور إرجاع
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str
    age: int
الخطوة 3: تنفيذ مسار fastapi للحصول على تفاصيل المستخدم

سنقوم الآن بتنفيذ مسار fastapi يسترجع معلومات المستخدم استنادًا إلى معرف المستخدم. سيتم التخزين المؤقت للاستجابة باستخدام redis للوصول بشكل أسرع في الطلبات اللاحقة.


من fastapi استيراد fastapi التطبيق = fastapi () # عينة من البيانات التي تمثل المستخدمين في قاعدة بيانات users_db = { 1: {"id": 1 ، "name": "alice" ، "البريد الإلكتروني": "[email protected]" ، "العمر": 25} ، 2: {"id": 2 ، "name": "Bob" ، "Email": "[email protected]" ، "Age": 30} ، 3: {"id": 3 ، "name": "Charlie" ، "Email": "[email protected]" ، "Age": 22} ، } @app.get ("/المستخدمين/{user_id}") cache_response (TTL = 120 ، مساحة الاسم = "المستخدمين") async def get_user_details (user_id: int): # محاكاة مكالمة قاعدة بيانات عن طريق استرداد البيانات من user_db user = users_db.get (user_id) إذا لم يكن المستخدم: رفع httpexception (status_code = 404 ، التفاصيل = "لم يتم العثور على المستخدم") إرجاع المستخدم
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str
    age: int
الخطوة 4: تشغيل التطبيق

ابدأ تطبيق fastapi الخاص بك عن طريق التشغيل:


Uvicorn Main: App -Reload
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str
    age: int
الآن ، يمكنك اختبار واجهة برمجة التطبيقات عن طريق جلب تفاصيل المستخدم عبر:


http://127.0.0.1:8000/users/1
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str
    age: int
سوف يجلب الطلب الأول البيانات من user_db ، لكن الطلبات اللاحقة سترجع البيانات من redis.

اختبار ذاكرة التخزين المؤقت

يمكنك التحقق من ذاكرة التخزين المؤقت عن طريق فحص المفاتيح المخزنة في Redis. افتح redis cli:


redis-cli مفاتيح *
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name: str
    email: str
    age: int
ستحصل على جميع المفاتيح التي تم تخزينها في Redis Till TTL.

كيف يعمل التخزين المؤقت في هذا المثال

الطلب الأول

: عندما يتم طلب بيانات المستخدم لأول مرة ، فإن واجهة برمجة التطبيقات (API) تجلبها من قاعدة البيانات (users_db) وتخزن النتيجة في إعادة تدوينها مع وقت واحد (TTL) من 120 ثانية.

الطلبات اللاحقة:

يتم تقديم أي طلبات لاحقة لنفس المستخدم خلال فترة TTL مباشرة من redis ، مما يجعل الاستجابة أسرع وتقليل الحمل على قاعدة البيانات.

TTL (حان الوقت للعيش):

بعد 120 ثانية ، ينتهي إدخال ذاكرة التخزين المؤقت ، ويتم جلب البيانات من قاعدة البيانات مرة أخرى على الطلب التالي ، تحديث ذاكرة التخزين المؤقت.

خاتمة

في هذا البرنامج التعليمي ، لقد أوضحنا كيفية تنفيذ التخزين المؤقت Redis في تطبيق Fastapi باستخدام مثال تفاصيل مستخدم بسيط. من خلال التخزين المؤقت لاستجابات API ، يمكنك تحسين أداء التطبيق الخاص بك بشكل كبير ، خاصة بالنسبة للبيانات التي لا تتغير بشكل متكرر.

يرجى القيام بتصويت ومشاركة إذا وجدت هذه المقالة مفيدة.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/sivakumarmanoharan/caching-in-fastapi-unlocking-high-derformance-development-20ej؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3