
memory-cache ומייבאים אותה עם require.topProduct. בודקים אם הערך קיים ב-cache. אם לא, מדמים שליפה ממסד הנתונים של מוצר (id 1, שם Apple, מחיר 3.5), ומכניסים אותו ל-cache. בסוף מחזירים cache.get של המפתח.cache.put מקבל מפתח וערך. המפתח הוא שם שאנחנו ממציאים, כמו אוסף של key ו-value.= במקום : באובייקט) גרם לשגיאה שנמצאה ותוקנה בהרצאה.הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Cache ב-NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
ה-State Management האחרון שאנחנו הולכים להתעסק איתו כרגע זה ה-Cash. Cash זה בעצם אזור זיכרון שאנחנו יכולים לשמור בו מידע, אבל הוא מטפל או אחראי על כל הלקוחות, הוא משרת את כל הלקוחות.
Session בצד של השרת, סיפק מידע פר לקוח, ללקוח יש את ה-Session שלו. Cash זה מידע עבור כל הלקוחות כולם. קודם כל נראה בסרטון הזה איך אנחנו בעצם משתמשים ב-Cash, ואז בסרטון הבא, real-life example to cache.
נתחיל עם התקנה. ההתקנה הדרושה לנו כרגע זה, יש כמובן כל מיני ספריות שנותנות שירות של cache, אבל ספריה מאוד פשוטה, נקראת memory cache.
בואו נריץ את זה. הנה יש לנו את ההתקנה. אנחנו רוצים לבנות פה למעלה const memory cache ו-require memory cache. עכשיו נבנה כאן איזה ראוט כזה של נניח API אם גולשים לטופ פרודקט ורוצים את המוצר שהוא נחשב המוצר הכי נמכר או הכי פופולרי הוא ה-Response זה הטופ פרודקט שלנו עכשיו קודם כל מה בעצם אני רוצה לעשות
אני רוצה לפנות לדאטאבייס לעשות חישוב מי המוצר הכי נמכר להוציא אותו ולהחזיר אותו ללקוח מה הבעיה לגשת לדאטאבייס? אין פה שום בעיה. אבל מה מאפשר לי קאש?
קאש מאפשר סך הכל ייעול של המערכת מבחינת פרפורמנס, מבחינת זמנים. זה הייעוד שלו, זאת המשמעות שלו. אם אני כל פעם שלקוח רוצה את אותו פרודקט, נניח שזה משהו שאני מציג הרבה ללקוחות, כל פעם אני ניגש לדאטאבייס ומתחיל לבצע את החישובים האלה, אז זה לוקח זמן לכל לקוח.
אולי אני לא צריך כל חמש דקות לעשות את החישוב הזה, אולי אני רוצה לעשות זאת פעם ביום. אז בואו נעשה את זה פעם אחת ביום, ניקח את המוצר הזה, נעלה אותו לזיכרון, ומעכשיו אני לא צריך לגשת יותר לדאטאבייס.
הרי גישה לזיכרון היא הרבה יותר מהירה מאשר גישה לדאטאבייס. לא צריך לגשת לדאטאבייס, לא צריך לעשות חישובים, אני פשוט לוקח ומחזיר.
אחרי שנגמר היום, למחרת אני אבצע עוד פעם את הגישה, אבל פעם אחת ביום, ולא כל חמש דקות או כל שנייה. אז קודם כל מה שאנחנו רוצים לבדוק זה איך אנחנו יכולים להכניס מידע ל-cash או לבדוק שהוא קיים.
אז מה שאנחנו רוצים לעשות זה ראשית לבדוק אם לא קיים ב-cash top product, שוב זה סתם שם מומצא, זה לא חייב להיות אותו השם שכתוב פה כמובן. אם לא קיים לי הערך הזה, ו-collection שיש בו key ו-value, זה ה-key.
אז אנחנו רוצים לגשת לדאטאבייס, אוקיי? get top product from the database. אז אנחנו כרגע, אין צורך שניגש לדאטאבייס, אלא const product = וכרגע אני אעשה הדמיה כאילו הלכתי לדאטאבייס והבאתי את המוצר הזה.
ID 1, name apple ו-price 3.5. נניח שזה ה-top product שלנו. מה שאנחנו רוצים לעשות זה להכניס אותו ל-cash.
אז יש לנו את ה... האמת שזה לא caches, זה memory cache. יש לנו את ה-memory cache, אולי נקרא לו cache, זה יהיה יותר פשוט, למה memory cache?
בואו נקרא לו cache, וזהו. אז אנחנו רוצים לגשת ל-cash, נקודה, ויש לנו פונקציית put, ואנחנו רוצים את ה-key product ואת ה-value top product.
ומכניס אותו לתוך ה-cash. בואו נשים פה console.log top product has been added to the... ולבסוף אנחנו רוצים to return at response.json.cash.get ותביא לי את ה-top product שלך בצורה כזאת.
וסיימנו. יש לנו כאן כרגע טיפול ב-top product ב-cash. בואו נבצע node-app. יש לנו פה שגיאה, לא קרה כלום, בואו נמצא אותה.
ID שווה, אוי אוי אוי, מה פתאום שווה? נקודותיים. בואו נריד שוב.