Memcached לעומת Redis

1. סקירה כללית

במאמר זה נבחן את הדמיון וההבדל בין שני מאגרי מידע פופולריים בזיכרון, Memcached ו- Redis.

2. Memcached ורדיס

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

Memcached הינה מערכת זיכרון מטמון מבוזרת המיועדת לנוחות שימוש ופשטות והיא מתאים היטב כמטמון או כחנות הפעלות.

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

3. התקנה

3.1. מתקין את Memcached

אנו יכולים להתקין את שרת ה- Memcached האחרון על ידי הורדת החבילה והפעלתו עשה:

$ wget //memcached.org/latest $ tar -zxvf memcached-1.6.3.tar.gz $ cd memcached-1.6.3 $ ./configure && make && make test && sudo make install

3.2. מתקין את Redis

באופן דומה, אנו יכולים להתקין את שרת Redis האחרון:

$ wget //download.redis.io/releases/redis-5.0.8.tar.gz $ tar xzf redis-5.0.8.tar.gz $ cd redis-5.0.8 $ make

4. קווי דמיון

4.1. חביון תת-מילי-שנייה

גם Memcached וגם Redis מציעים זמני תגובה של תת אלפית השנייה על ידי שמירת נתונים בזיכרון.

4.2. מחיצת נתונים

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

4.3. תמיכה בשפות תכנות

כמו כן, שניהם תומכים בכל שפות התכנות העיקריות, כולל Java, Python, JavaScript, C ו- Ruby.

בנוסף, ישנם מספר לקוחות Java הזמינים עבור שני מסדי הנתונים בזיכרון. לדוגמה, Xmemcached ו- Memcached-java-client זמינים עבור Memcached, בעוד Jedis, Lettuce ו- Redisson זמינים עבור Redis.

4.4. ניקוי מטמון

Memcached מאפשר ניקוי המטמון באמצעות שוטף_כל פקודה. באופן דומה, Redis מאפשרת לנו למחוק הכל מהמטמון באמצעות פקודות כמו FLUSHDB ו FLUSHALL.

4.5. דֵרוּג

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

5. הבדלים

5.1. שורת פיקוד

Memcached מאפשר לנו להפעיל פקודות באמצעות חיבור לשרת באמצעות Telnet:

$ telnet 10.2.3.4 5678 מנסה 10.2.3.4 ... מחובר ל- 10.2.3.4. 
סטטיסטיקה $ STAT pid 14868 זמן פעולה STAT 175931 זמן STAT 1220540125 // ...

בניגוד ל- Memcached, Redis מגיעה עם ממשק שורת פקודה ייעודי, רדיס-קליומאפשר לנו לבצע פקודות:

$ redis-cli COMMAND 1) 1) "שמור" 2) (מספר שלם) 1 3) 1) "admin" 2) "noscript" // ... 2) 1) "multi" 2) (מספר שלם) 1 3) 1) "noscript" 2) "מהיר" // ... 3) 1) "geodist" 2) (מספר שלם) -4 3) 1) "read-only" // ... // ...

הנה, הוצאנו להורג פקודה לרשימת כל הפקודות שמספקת Redis.

5.2. Dump קלט / פלט דיסקים

Memcached מטפל בהטלת דיסק רק בכלים של צד שלישי כמו libmemcached-tools או במזלגות כמו memcached-dd.

עם זאת, Redis מספקת מנגנוני ברירת מחדל הניתנים להגדרה כמו RDB (קובץ מסד הנתונים של Redis) או AOF (קבצים הניתנים לתוספת בלבד) לצורך השלכת דיסק. זה יכול להיות שימושי לארכיון ולהחלמה.

באמצעות redis-cli, אנו יכולים לבצע את הסינכרוני לשמור פקודה לצלם תמונת מצב של הנתונים בזיכרון:

$ redis-cli שמור בסדר

כאן הפקודה שומרת את תמונת המצב ב- a dump.rdb קובץ בינארי ומחזיר את הסטטוס בסדר כשתושלם.

עם זאת, ביצוע האסינכרוני BGSAVE מתחיל את תהליך הרקע של צילום תמונה:

$ redis-cli BGSAVE בסדר

בנוסף, אנו יכולים להשתמש ב- LASTSAVE פקודה לבדוק את זמן יוניקס של תמונת המצב המוצלחת האחרונה של DB.

$ redis-cli LASTSAVE (מספר שלם) 1410853592

5.3. מבני מידע

Memcached מאחסן זוגות של ערכי מפתח כמחרוזת ויש לו מגבלת גודל של 1MB לכל ערך. למרות זאת, Redis תומכת גם במבני נתונים אחרים כמו רשימה, סט וחשיש ויכולה לאחסן ערכים של עד 512 מגהבייט בגודל..

5.4. שכפול

Memcached תומך בשכפול עם מזלגות של צד שלישי כמו repcached.

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

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

5.5. עסקאות

Memcached אינו תומך בעסקאות, למרות שפעולותיה אטומיות.

Redis מספקת תמיכה מהקופסה לעסקאות לביצוע פקודות.

אנו יכולים להתחיל את העסקה באמצעות רַב פקודה. ואז נוכל להשתמש ב- EXEC פקודה לביצוע הפקודות הבאות. לבסוף, רדיס מספקת את שעון פקודה לביצוע העסקה המותנה.

5.6. פרסם והירשם להודעות

Memcached אינו תומך בהודעות פרסום / מנוי מחוץ לקופסה.

רדיס, לעומת זאת, מספקת פונקציונליות לפרסום והרשמה כמנוי להודעות באמצעות תורי פאב / תת הודעות.

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

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

5.7. תמיכה גיאו-מרחבית

תמיכה גיאו-מרחבית שימושית ליישום תכונות מבוססות מיקום עבור היישומים שלנו. שלא כמו Memcached, Redis מגיעה עם פקודות מיוחדות לניהול נתונים גיאו-מרחביים בזמן אמת.

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

בנוסף, אנו יכולים להשתמש ב- Spring Data Redis כדי לאפשר תמיכה גיאו-מרחבית של Redis ביישום Java.

5.8. ארכיטקטורה

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

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

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

Redis יכול להתמקד בצורה אופקית באמצעות אשכולות, אשר מורכבים יחסית להקמה ותפעול. כמו כן, אנו יכולים להשתמש ב- Jedis או Lettuce כדי לאפשר אשכול Redis באמצעות יישום Java.

5.9. LUA סקריפטים

בניגוד ל- Memcached, אנו יכולים לבצע סקריפטים של LUA נגד Redis. הוא מספק פקודות כמו EVAL ו עומס סקריפט, שימושי לביצוע תסריטי LUA.

למשל, אנו יכולים לבצע את EVAL פקודה להערכת התסריט:

$ redis-cli eval "return redis.call ('set', KEYS [1], 'baeldung')" אתר אחד בסדר

הנה, הגדרנו את המפתח אתר אינטרנט לערך ביילדונג על ידי הערכת תסריט.

5.10. שימוש בזיכרון

ל- Memcached קצב ניצול זיכרון גבוה יותר מאשר ל- Redis כאשר משווים את מבנה נתוני המחרוזת.

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

6. מסקנה

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

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

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


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