מבוא ל- Guava CacheLoader

1. הקדמה

במאמר זה נציג את הגויאבה CacheLoader.

לפני שתקרא עוד, מומלץ שתהיה הבנה בסיסית של ה- טעינת מטמון בכיתה ראשונה. הסיבה לכך היא ש מטמון מטמון עובד עם זה באופן ספציפי.

בעיקרו של דבר, ה מטמון מטמון היא פונקציה המשמשת לחישוב ערך במקרה שהוא לא נמצא בגויאבה טעינת מטמון.

2. שימוש בא מטמון מטמון עם טעינת מטמון

כשיש מטמון החמצה עם א טעינת מטמון, או שצריך לרענן את המטמון, מטמון מטמון ישמש לחישוב ערכים. זה עוזר להכיל את לוגיקת המטמון שלנו במקום אחד, מה שהופך את הקוד שלנו למלוכד יותר.

2.1. תלות של Maven

ראשית, בואו נוסיף את התלות שלנו ב- Maven:

 com.google.guava גויאבה 29.0-jre 

תוכל למצוא את הגרסה האחרונה במאגר Maven.

2.2. ערכי מחשוב ומטמון

עכשיו, בואו נראה איך נוכל ליצור א טעינת מטמון עם מטמון מטמון:

LoadingCache loadingCache = CacheBuilder.newBuilder () .build (חדש CacheLoader () {@Override ציבורי עומס מחרוזות (מחרוזות אחרונות) זורק חריג {להחזיר slowMethod (ים);}});

בעיקרו של דבר, ה טעינת מטמון יקרא שלנו מוטבע מטמון מטמון בכל פעם שהוא צריך לחשב ערך שלא נשמר במטמון. בואו ננסה לספור כמה פעמים שלנו slowMethod () נקרא כאשר אנו מאחזרים משהו מהמטמון מספר פעמים:

ערך מחרוזת = loadingCache.get ("מפתח"); value = loadingCache.get ("מפתח"); assertThat (callCount) .isEqualTo (1); assertThat (value) .isEqualTo ("expectValue"); 

כפי שאנו רואים, זה נקרא רק פעם אחת. בפעם הראשונה הערך לא נשמר במטמון שכן טרם חושב. בפעם השנייה הוא הוחזק במטמון מהשיחה הקודמת, כדי שנוכל להימנע מהתקורה של התקשרות שלנו slowMethod () שוב.

2.3. רענון המטמון

בעיה נפוצה נוספת במטמון היא רענון המטמון. אמנם ההיבט הקשה ביותר הוא ידיעה מתי כדי לרענן את המטמון, אחד אחר יודע אֵיך.

פתרון אֵיך הוא פשוט בשימוש ב- מטמון מטמון. ה טעינת מטמון פשוט יפעיל אותו עבור כל ערך שצריך לרענן. בואו ננסה זאת עם מבחן:

ערך מחרוזת = loadingCache.get ("מפתח"); loadingCache.refresh ("מפתח"); assertThat (callCount) .isEqualTo (2); assertThat (value) .isEqualTo ("מפתח");

שלא כמו השיחות הבאות שלנו ל קבל (), רענן () יאלץ את מטמון מטמון להתקשר שוב, לוודא שהערכים שלנו מעודכנים.

3. מסקנה

במאמר זה הסברנו כיצד א טעינת מטמון משמש א מטמון מטמון על מנת לחשב ערכים על החמצת מטמון, וגם על רענון מטמון. כדאי גם לבדוק את המאמר המעמיק יותר הזה על מטמון גויאבה.

ניתן למצוא את היישום של דוגמאות אלה ב- GitHub. זהו פרויקט של Maven, ולכן צריך להיות קל להפעלה כפי שהוא.


$config[zx-auto] not found$config[zx-overlay] not found