Redis SCARD

Redis Scard



'סטים של Redis הם אוספים לא מסודרים של מחרוזות שאינן מכילות כפילויות. אלה דומים מאוד ל-Java HashSets, Python Sets וכו'. והכי חשוב, פעולות בסיסיות כמו הוספה, הסרה ובדיקת קיומו של חבר הן יעילות ביותר מכיוון שהן פועלות במורכבות זמן O(1).

חברים בסט

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









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



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

הפקודה SCARD

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





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

SCARD set_key

set_key: המפתח של הסט של Redis



פקודה זו מחזירה ערך שלם שהוא מספר האיברים בקבוצה.

מקרה שימוש - ספור את המבקרים הייחודיים לאתר

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

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

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

SADD YummyPizzaVisitors: אוקטובר ג'ון מרי ראזה סטוניס הנסיך

כצפוי, המספר השלם 5 הוחזר, כלומר חמשת האיברים מתווספים לקבוצה המאוחסנת במפתח ' מבקרים של פיצה טעימה: אוקטובר.

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

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

scard YummyPizzaמבקרים:אוקטובר

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

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

צללו את NonExistingKey

סיכום

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