از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 12 آموزش Redis از صفر تا حرفهای، مدرس به مبحث ست در Redis میپردازد. ست یک مجموعه غیرمُرتب از استرینگهای یونیک است و دستورات مختلفی برای کار با آن وجود دارد، از جمله اس آر ای (اضافه کردن)، سیس ممبر (چک کردن عضویت)، آنین (حذف تکراریها)، اینترسکت (تشابه)، دیف (اختلاف)، اس آی ان (مقدار مشترک)، اس دی آی اف (تفاوت)، اس ممبرز (ذخیره نتیجه حذف تکراریها) و اس کن (چک کردن وجود یک عضو). همچنین، به کاربردهایی مانند چک کردن یونیک بودن یوزرنیم در ثبت نام در پروژه فروشگاه و استفاده از ست برای ذخیره لیست فیلمهای لایک شده کاربران و تعیین تشابه بین کاربران اشاره میشود.
نکات کلیدی
دستورات مهم ست در Redis شامل اس آر ای، سیس ممبر، آنین، اینترسکت، دیف، اس آی ان، اس دی آی اف، اس ممبرز و اس کن هستند.
استفاده از ست در پروژه فروشگاه میتواند شامل چک کردن یونیک بودن یوزرنیم در ثبت نام باشد.
استفاده از ست برای ذخیره لیست فیلمهای لایک شده کاربران و جستجوی تعداد لایکها.
کاربرد ست در تعیین تشابه بین کاربران بر اساس فیلمهای لایک شده.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ مبحث
بعدیمون داخل ردیس و میخوایم راجع به ست
صحبت بکنیم. خب بذارید من بیارمش
داکومنتشو. خب میگه ست یه مجموعه غیرمنظم
از استرینگهای یونیکه.
خب اینجا چند تا کلمه خیلی مهمه بچهها
یکی آندرد
یکی کالکشن مجموعه یونیک و استرینگ یعنی
چار تا کلمه داره
حالا میگه که چند تا نکته میگه مثلاً میگه که برای ترک
کردن کل آیپی آدرسهای مثلاً داده شده به
این پورس مثلاً مثالاشو داره میزنه خب یه
سری کامندم داره اینجا جالبه یکی ۱۰ده
برای اضافه کردنه
اسآر ای برای ریمو کردن سیس ممبره
برای اینکه تست بکنیم یه استرینگ جزء اون
اعضا هست یا نه
سینتره خب حالا اگه میخوایم یه تعدادشو
برگردونیمه و حالا جلوتر چند تا دیگه هم
هست که الان با هم میبینیم
بریم یه چند تا مثال با هم ببینیم یه ذره
بیشتر واست آشنا بشیم من میام داخل این
محیط یه
نیو نتب کنم. خب
بریم یه چند تا مثال بزنیم.
[گلویش را صاف میکند]
بریم اول یه دونه اضافه بکنیم مثلاً میزنم ۱۰
کالرز اسمشه و مقدارشم رد. خب این که نکته خاصی نداره اضافه شد.
حالا میخوام یه رنگ دیگه رم اضافه کنم
مثلاً گرین
اینم اوکیه انجام شد بعد
حالا
میخوام برم اعضاشو ببینم چه دستوری داشتیم
یادتونه
سیس ممبر داریم یکی دیگه هم داریم حالا اینجا ننوشته
ما اینجا استفاده میکنیم یه چیز دیگه داره به نام اس ممبرز
چه اسم کلیدو میدیم کانالش
میگه د تا عضو داره یه دونه رد بود یه گرین بود یا تو شما د تا
اد کردم ففاصله خب پس این میشه نحوه درق
اد کردن و
به قول گفتنی گرفتن حالا یه نکته ریزی
داریم اینجا
یه دستور دیگه داریم به نام آنین
آنین چیکار میکنه بذار با یه مثال براتون
بگم
فرض کنید شما سه تا مجموعه رنگ درق ست
دارید
فرض کنید
اینو میکشم چون قراره زیاد استفاده کنم از این چیزی که میخوام بگم دارم میکشمش
مثلاً کالرز
ی
خب مثلاً چند تا رنگم اینجا میذارم رنگ مثلاً قرمزو میذارم تو اولی
رد
و یه دونه هم مثلاً یه رنگ دیگه نارنجی رنگ
این چه رنگش عق شد؟ خب اینجا یه دونه بلو رو میارم
بعد یه دونه سبز میارم
یه دونه هم مثلاً بنفش
پرپرو میارم خب س تا مجموعه کالر دارم میخوام برم
ببینم آنین چیه آنین بچهها میاد چیکار
میکنه تمام اینا رو با همدیگه یکی میکنه
ولی غیرتکراریا رو برمیداره یعنی نمیاد
غیرتکراریا رو در حقیقت بذاره تو مجموعه
خودش خب
الان اینو آنین بکن چی میشه ردو میاره
بعد بلو رو میاره
اینم میاره اورنجم میاره از این چیو نداره گرینو نداره
پرپلو نداره از اینم که هر سه تاشو داریم این میشه
آنینش خب بریم دستورشم با همدیگه ببینیم
یه بار ران کنیم برای اینکه بخوایم اینا
رو آنین بکنیم اول بذارید بیم اینجا خب
میگم
۱۰۰
کالرز د. یک مثلاً اولی چی بود؟ رد بلو
اورنج درسته
خط بعدی ۱۰۰
کالرز د
بلو گلی
پرپل
۱۰۰ کالرز د کالرز سه ببخشید بلو
رد
پرپل خب این سه تا من اینو اد میکنم ران
میکنم که این ست ستمون ساخته بشه حالا
میخوام اینا رو آنین بکنم خب چه دستوری
داریم میگم که
سان
آی او ان یا اس آنین اینجوری بگیم بهتره
بعد اسماشو پشت هم مینویسم شد
نگاه کنید این خروجی شد تمام رنگای غیرتکراریو برا من آورد
یه دستور دیگه داریم به نام اینترسکت میاد
و چه تشابهشونو میاره مثلاً اینترسکت اینا
چی میشه
بچه تشابه اینا میشه رد رد تو همشون هست دیگه
بلو هم تا همشون هست ولی دیگه بقیهشون
نیست بریم با هم ببینیم
دستورش هستش
اس آی انتر یعنی اس اینتر میشد همه
اینو برمیدارم هم
این میشه
فقط بلو رد تو سه تاش بودا نبود آ رد تو این وسطیه نیست اشتباه گفتم فقط
بلوئه آره
یه دستور دیگه داریم باحاله اختلافشونو
میاد پیدا میکنه یعنی میگه که چی تو بقیه
نیست اینجا نگاه کنید
اس دی آی اف بعد اینجا بچهها ترتیب مهمه الان چک
میکنه کدوم تو کالر یک هست تو این د تا
نیست اورنج
اورنج تو این د تا نیست پس اینجا بچهها
ترتیب مهمه اینکه اولی کدومه میاد اولیو
چک میکنه کدوم یکی از تو این اولی هست تو
این د تا نیست پس اینجا ترتیب مهمه برخلاف
اون د تای قبلی
خب
دستور بعدی که میخوایم بریم سراغش ش بهش
میگن بذار من سرچ کنم اینجا اس آی ان
ترز استور
اینو میخوایم بریم با هم ببینیم چیکار
میکنه این
میگه موافق معادل اس اینتره همون اینترسکشنه خب
آها میگه برخلاف این که دقت برمیگردون
جوابو این تو یه جایی ذخیره میکنه
همین برین با هم دستورشو ببینیم اینجا
نگاه کنید من بین اینو میزدم
اس اینتر خروجی رو بهم برمیگردون میگفت
این بچه تشابهه اما فرقش با این چیه من
اینو یه دونه پایین باز کنم
اینجا نگاه کنید
اس اینتر استور میگه خروجی رو کجا بریزم میگم خروجی رو بریز اینجا
دو نقطه ریزال
بریز داخل این چیا رو میگه چک بکنم بچه
تشابهشونو میگم کالرز یک
کالرز د
کارز سه میگم وجه تشابه این سه تا رو چک
کن هرچی بود بریز داخل این
خب حالا برای اینکه من ببینم این چیشه چیکار میکردیم یه دستوری داشتیم به نام
اس ممبرز
اینم بیام نشونتون بدم
اس مم برز اینو بهش میدم میگم این چیه
الان داخلش طبیعتاً باید چی باشه همون
بلوئه باشه که تو هر سه تا بود
پس فقط فرقش با اون دستور بالایی اینه که
خروجی رو میریزه داخل یه چیزی که شما
بخواید نه نه اینکه نمایش بده
یه نکته راجع به سیس ممبرز بگم میشه چی استفاده از ایناهم کرد مثلاً نگاه
کنید کالر یک
کالر یکمون رد و بلو و اورنج داشت مثلاً
من میم بینم پرپل داخلش هست یا نه
پرپل
پرپل این نیست دیگه چی برمیگردونه او
آ سیس ممبرز ببخشید سیس اشتباه نمیشه ممبرز اینجوریه ممبر بش سیس ممبر اگه صفر
برگردونه یعنی نیست اما اگه اصلاً برسم
بلو که هست یک برمیگردونه اینم کاربرد
دستور سیس ممبر که میره میگرده ببینه هست
یا نه
یکی دیگه هم داریم این یکی خیلی باحالتره
اس ام
از ممبر
یه مجموعه رو چک میکنم مثلاً میگم بلو هست رد
پرپر
گرین میگم این چار تا رو چک کن ببین داخل
این هست یا نه یه آرایی برمیگردونیم
بچهها بهم میگه اولی هست بلو هست ردم هست
اون د تا آخریو که زدی نیست پرپل و گرین
نیست
پس اینکه ما میخوایم یه چیزو چک کنیم یا
چند تا چیزو متفاوته
کالرز نقطه تعداد المانهای داخلشو برمیگردونیم میگه سه تا المان داخل این
هست
ما میتونیم یک المان رو از داخل یه دق ست حذف بکنیم خب
مثلاً من میام از داخل این میخوام یه دونه
بلو رو حذف کنم اس آر ای ام
میگم بلو رو برو حذف بکن
الان بلو رو حذف کرد حالا من اسکارت بزنم
خب الان اگه بزنم
سیز ممبر که الان تازه یاد گرفتیم بگم
ببین بلو داخلش هست یا نه میگه نیست صفر
برمیگردونه چون حذفش کردم دستوری که
قبلاً بود
یه دستور دیگه داریم باحاله زید بم میتونم پیداش کنم تو
داکومنت
اینجا نگاه کنید یه دستوری دارین بذار داکومنتشو ببینم اس
چقدر داکومنت جذابی داره بریم مثالشو بگیم خب
میگم اس کن
روی کالرز
ی
صفر
پانت د خروجیشو ببینیم
خب این دستور بچهها یه نکته جالبی داره ما یه دستوری داشتیم به نام
اس ممبرز یادتونه بذار اس ممبرزو ران کنم
کنار این
اس ممبرز
کالریز نقطه این چیکار میکرد؟ میاد کل عناصر کال د رو
بزنم که ست عضو داره کل عناصر اونو
برمیگردون درسته؟ حالا فرض کنید مثلاً
داخل کالج ما ۱۰۰ تا رنگ داریم. نمیخوام
هر ۱۰۰ تاشو برگردونه. میخوام یه تعداد
مشخصی رو برگردونه. مثلاً فرض کنید
میخوام فقط د تا این د تا رو برگردونه. د
تای آخرو میام چیکار میکنم؟ میام میگم
کالرز د
میگم از اولی شروع کن د تا بیاد بهم نشون
بده. نگاه کنید
یه ذره اشتباه داره نشون میده. اجازه بدید.
اینو بزنم صفر چی میده
این کار نمیکنه مثل اینکه بچهها این باید چیکار میکرد؟ باید اون
د تایی رو برمیگردونی که من بهش گفتم
مثلاً اگه گفتم یک اولی رو اگنور میکرد
از دومی شروع میکرد د تا بهم میداد
ولی این کارو نکرد
چیزی که اشتباه ننوشتیم
از سومی کانت د
کلاً خروجیش یه چیزه یعنی خیلی براش مهم
نیست که چی می بگذریم اشکال نداره اصلاً
شدم برداشت خب بذار ببینم دستور دیگهای
مونده یا نه؟ اگه مونده اونا روم بهتون
بگم.
خب حالا بریم سراغ کاربردای ست. ست چه کاربردی داره الان به نظرتون؟ یعنی من چه
استفادهای از این ست میتونم تو پروژه
قبلی بکنم؟ پروژهای که داشتیم با هم
میبردیم جلو. مثلاً یه کاربردش میتونه
این باشه که بیایم بالاتر اینجا.
این اپلیکیشنم
مثلاً اینجا که دارم ثبت نام میکنم چک
بکنم ببینم یوزرنیمی که کاربر من زده تو
لیست یوزرنیمهای قبلیم هست یا نه یعنی
میتونم برای یونیکنس چک کردن یونیک بودن
استفاده بکنم این یه کاربردش اینه خب
کاربرد دیگهش چیه
این راست اینو با چی انجام میدیم با دستور سیس ممبر چک میکردیم یه چی چیزی جزئی از
این ست هست یا نه؟
حالت دوم
مثلاً فرض کنید که من یه چیزی ذخیره کردم مثلاً میگم که کاربر این لیست از فیلما رو
لایک کرده مثلاً میخوام بفهمم که چند تا
رو لایک کرده آیا اینو لایک کرده یا نکرده
خب بعد دیگه
هم مثلاً یه همچین کاربردی هم میتونه
داشته باشه دق برای ست
که دستولاشو دیدیم دیگه دیگه مثلاً
اسکارت تعداد لایکها رو برمیگردونه چند
تا لایک کرده خب
و دستور دیگه
آها مثلاً فرض کنید د تا کاربر داریم د تا
مجموعه فیلمو لایک کردن لیست فیلمایی که
لایک کردن دارن میخوام ببینم وجه
تشابهاشون چیه مثلاً این د تا کاربری دارن
یا نه که دیدیم دستهشو دیگه چی بود اس
اینتر بود که میرفت بچهتر شما رو میدید
و مثلاً کارای دیگه میشه کرد
زمانایی که شما میخواید یه لیستی از مثلاً المانها درست کنید که ترتیب توش
مهم نیست مثلاً یه لیستی از یوزرنما یه
لیستی از ایمیلها اینجا ترتیب مهم نیست
دیگه میتونید برید سراغ ست اینم میشه
کاربردای ست که تو پروژههمون میتونیم
استفاده کنیم بریم بیایم اداش جلسه بعدی
صحبت کنیم فعلاً خداحافظ
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
دستورات مهم ست در Redis شامل اس آر ای (اضافه کردن)، سیس ممبر (چک کردن عضویت)، آنین (حذف تکراریها)، اینترسکت (تشابه)، دیف (اختلاف)، اس آی ان (مقدار مشترک)، اس دی آی اف (تفاوت)، اس ممبرز (ذخیره نتیجه حذف تکراریها) و اس کن (چک کردن وجود یک عضو) هستند.
در پروژه فروشگاه میتوان از ست برای چک کردن یونیک بودن یوزرنیم در ثبت نام استفاده کرد.
ست میتواند برای ذخیره لیست فیلمهای لایک شده کاربران و تعیین تشابه بین کاربران استفاده شود.
آخرین بهروزرسانی محتوای متنی:
آموزش جامع و کاملاً عملی Redis به زبان فارسی؛ از نصب و راهاندازی تا پیادهسازی الگوهای حرفهای. در طول این دوره تمرینمحور، یک اپلیکیشن فروشگاه اینترنتی میسازیم و با مفاهیمی مثل مدلسازی داده، جستجو، همزمانی و ارتباط سرویسها در دنیای واقعی کار میکنیم. در این دوره چه یاد میگیرید؟ راهاندازی Redis بهصورت لوکال و کار با CLI دستورات افزودن و Query گرفتن از دادهها کار با Hashها، Listها، Setها و Sorted Setها (رتبهبندی و امتیازدهی) ایجاد یکتایی داده با Setها + تمرینهای عملی Pipelining برای بهینهسازی کارایی Design Patterns قدرتمند مخصوص Redis و نکات و Gotchaهای مهم تبدیل مدلهای رابطهای به مدل Redis (Data Modeling) HyperLogLog برای شمارش تقریبی توسعه قابلیتها با Scripting مدیریت Concurrency و حل مسائل همزمانی جستجو و فیلتر پیشرفته با RediSearch (Querying & Search in Action) ارتباط بین سرویسها با Streams پیادهسازی و تمرین مستمر روی پروژه E-Commerce مخاطبان برنامهنویسان بکاند و فولاستک، مهندسان داده و هرکسی که میخواهد Redis را بهصورت کاربردی و پروژهمحور یاد بگیرد.