צנון LSET

Znwn Lset



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

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









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



פקודת LSET

הפקודה LSET מגדירה אלמנט באינדקס הנתון של רשימת Redis המאוחסנת במפתח שצוין. יש לו את התחביר הפשוט הבא:





LSET list_key index אלמנט

list_key : המפתח של רשימת Redis.

אינדקס : האינדקס שבו אתה צריך להגדיר אלמנט.



אֵלֵמֶנט : רכיב המחרוזת שיוגדר באינדקס שצוין.

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

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

מקרה שימוש - עדכן פוסטים במדיה חברתית

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

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

LPUSH social-media:user:100 '2022-08-01: יום נחמד להתחיל בו.'
LPUSH social-media:user:100 '2022-08-05: התחילה עבודה חדשה ב-linuxhint'
LPUSH social-media:user:100 '2022-08-06:מסיבה נהדרת היום'
LPUSH social-media:user:100 '2022-08-07: יום רע!!!'

תְפוּקָה

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

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

LSET social-media:user:100 2 'החל תפקיד חדש ככותב ב-LinuxHint'

תְפוּקָה

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

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

LSET social-media:user:100 -2 'החל תפקיד חדש ככותב ב-LinuxHint'

כצפוי, האלמנט השלישי הוגדר למחרוזת החדשה 'העבודה התחילה ב-LinuxHINT'.

אם תציין אינדקס שהוא מחוץ לטווח, הוא יעורר שגיאה, כפי שמוצג להלן:

LSET social-media:user:100 6 'העבודה התחילה ב-LinuxHINT'

תְפוּקָה

סיכום

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