از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 36 آموزش Redis از صفر تا حرفهای، مدرس به معرفی ماژول Redis Search و نحوه استفاده از آن با ایندکسسازی پرداخته است. در این جلسه، به نحوه جستجوی سریع دادهها با استفاده از ایندکس و تفاوت بین تگ، تکست و نومریک در Redis Search اشاره شده است. همچنین، به استفاده از عملگرهای منطقی در جستجو و تعیین محدوده جستجو با استفاده از علامت کوتیشن و مفهوم پایینی و بالایی در جستجوی نومریک پرداخته شده است.
نکات کلیدی
Redis Search با استفاده از ایندکسسازی به جستجوی سریع دادهها کمک میکند.
تفاوت بین تگ، تکست و نومریک در Redis Search به طور واضح توضیح داده شده است.
میتوان از علامت کوتیشن یا کوتیشن دوگانه برای تعیین محدوده جستجو استفاده کرد.
در جستجوی نومریک، مفهوم پایینی و بالایی و استفاده از منفی اینفینیتی مورد توضیح قرار گرفته است.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ بحث سرچ توی ردیس با استفاده از
ماژول ردیس سرچ.
اول راجع به این صحبت کنیم که اصلاً چرا
ما با این ماژول نیاز داریم؟ این تصویرو
بچهها ببینید
فرض کنید شما یه دیتای شبیه این رو توی
ردیس دارید مثلاً یه س یه چیزی داره به
نام پرایس قیمت
مثلاً اگه من بخوام بگم که برو
بالاترین
آیتما بر اساس قیمتو برام بیار مثلاً ۵ تا
اولشو چیکار باید میکردیم خاطرتون باشه
از جلسات قبلی میومدیم یه سورت ست درست
میکردیم از اون استفاده میکردیم و این
خب چیز من راحتی نیست دیگه
در صورتی که شما
با ردیس سرچ خیلی راحت میتونید یه کوری
بزنید هر کوری نمیناشو مثلا اینجا دارید
میبینید مثلاً گفتم که برو همه آیتم رو
پیدا کن که قیمتش کمتر از ۴۵ باشه یا همه
آیتم رو بیا که مثلاً رنگشون گرین باشه
خیلی راحت با یه کوریم شما میتونید این
کارو بکنید کنید نیاز نباشه برید یه چیز
دیگه درست کنید که این کارو براتون انجام
بده. خب
اما مراحل
در حقیقت
پیاده ساده سرچ چیه؟ اول اینکه شما باید برید تمام آیتمهایی که دارید رو ایندکس
بکنید.
خب ایندکس کردن یعنی چی؟ اینجوری بهتون
بگم. شما فرض کنید یه کتابی دارید کلی
دیتا توشه این کتابه شماره صفحه نداره
خب شماره صفحه نداره
اگه بخواید یه چیزی دنبالش بگردید داخل
این کتاب
ولو حتی بدونید مثلاً توش صفحه ۲۲ه
وقتی صفحات صف شماره صفحه نداره خیلی کار
سختیه باید دونه دونه صفحاتو خودتون
بشمارید تا برسید به اون صفحه ایندکس میاد
چیکار میکنه؟ میاد این صفحات کتاب رو
چیکار میکنه؟ یک شمارهای رو بهشون
اختصاص میده
و بعد وقتی این شماره اختصاص داده بشه اون
عملیات سرچمون سریعتر و راحتتر اتفاق
میفته. حالا من خیلی مثال دم دستی زدما.
پس اولین استپمونه اینه که بریم تمام اون
آیتمها رو ایندکس بهشون بدیم. یه ایندکس
باید بهشون داده بشه.
و بعدشم میتونیم دیگه بریم کولی بزنیم بر
اساس اون ایندکسی که دادیم
خروجی بگیریم ایندکس رو بچهها یه بار
میدیما فقط یک بار به ازای هر دیتا تایپی
که داخل ردیس داریم میدیم نیاز نیست مثلاً
اگه چیزی اضافه شد دوباره بریم ایندکس
بدیم
خب بذار من
آربوکو باز کنم بریم یه تستی بکنیم ببینیم
چهجوریه دنیا خب خب یه سری دیتا من چه
الکی میزنم تو ردیس الان بعد میریم
ایندکسش میکنیم بعد میریم روش سرچ انجام
میدیم بعد دیگه توی اون دل اون سرچه کل
چیز رو میگیریم خب بذار من فقط واسه یه
عکس بیارم
ما قراره که این دیتا رو پیادهسازی بکنیم برای تست
۴ تا ۸ه که بریم پیاده سزی بکنیم کارز ایوان و بیان سی و دیوان سه تا فیلدم داره
نیم داره کالر داره و سال یه رو خب بیایم
اینجا
بریم اول اینو اضافه کنیم توی در حقیقت دیتابیسمون ردیسمون
به دستور ادست این کارو میکردیم یادتون
باشه یه کلید بهش میدیم کارز
هشتگ
ایوان
نیم مثلاً اولی میدیم فست کار
کالر رد سال ۱۹۵۰
میام خط پایین همینو کپی میکنم
۴ تا ازش کپی میکنم و مقدراشو عوض میکنم و مثلاً دومی رو بذاریم بی وان
سی بان و اینم دیوان مثلاً اینو بذاریم
کار خالی
اینو بذاریم مثلاً اولد کار اینو بذاریم
نیو کار مثلاً
دومی رنگشو بذاریم
قرمز بمونه اینا رو بکنیم بلو
اینو بکنیم ۱۹۶۰ هست
۱۹صد و ۷۰
۱۹۹
اینو ران کنید صفر بده ۳ تا درسته خب
الان ما دیتاون رو اد کردیم حالا بریم
ایندکس بسازیم و
بعدش
بریم ازش استفاده کنیم من یه دونه کد جدید
باز میکنم اینجا اینو بدم بالا خب
برای ساختن ایندکس میگیم اف تی
کرت خودش ساجست کرد اول باید یه ایندکس براش مشخص بکنیم یه اسمی براش بذاریم
میذارم آیدی ایکس دو نقطه کارز
روی میخوام این کارو بکنی بعد میگه خب هشاات اسمشون چیه میگم که یه
پریفیکسی همشون شون دارن
یه دونه پریفیکسی دارن کارز هشتگ همشون اینجوری شروع میشه اسماشون میگه دمت
گرم حالا باید بریم بقیه مشخص اسکیمای اون
حشر مشخص بکنیم خب
من اینا رو پاک کنم راجع به این جلوتر
صحبت خواهیم کرد ولی الان میخوام بنویسم
اسکیما
نیم
از جنس تکست
و کالر از جنس تک حالا راجع به اینا صحبت خواهیم
کرد بچهها من ای بابا این اسکیما رو
میبرم خط پایین یه تبم میزنم که منظورم
اینه که این ادامه بالاییه منظورم این
نیست که این یه خودش یه کامنده خب اینو
ران میکنم اوکی داد ایندکس من روی ش کارز
ساخته شد اسمشم چیه ایندکس آیدی ایکس کارز
خب حالا بریم سرچ کنیم بریم یه سری کام
کوری بزنیم ببینیم که خروجیش چهجوریه
کوریایی که میشه زد
فرض کنید
من دنبال
ماشینی هستم که اسمش فست کاره میگم اف تی
سرچ اول باید ایندکسه رو بگم کجا بره بگرده
میگم آیدیکس کارز
هشتگ نیم دو نقطه پرانتز باز
فست کار
میگم برو دنبال فضار بگرد خروجیشو نگاه کنید بچهها
آورد برام
بریم یه کوری دیگه بزنیم من اینو کامنت کنم خب
تا اینجاشو کپی میکنم که نخوام دوباره
بنویسم
میخوام دنبال ماشینایی بگردم که رنگشون آبیه
اد ساین کالر
دو نقطه بلو
یه جا پرانتز استفاده کردم اینجا براکت
استفاده کردم میخوام حالتهای مختلفشو
ببینید که
هر را جا میفته نگاه کنید رفت تمام
ماشینایی که بلو بودن آورد د تا ماشین
داشتیم بلو بودن سی ۱ و دی ۱ ایناش
تمام ماشینایی میخوام که سالشون از ۱۹۵ باشه تا ۱۹۸۰
میام میگم که ادان یر
دو نقطه ۱۹۵ ۱۹۸۰
آها یه اسپیس اضافه زدم میگه این اسپیسه رو نباید بزنید اینجا
اوکی بیا اوکی خب اینم از پیاده سازی دق
سرچ و نحوه استفاده ازش خب
من این سید فقط نگاه کنید جا نمونده باشه تو این داکومنت
یه نکته اینجا بگم این بچهها یکه شما میتونید مثلاً چند تا پریفیکس دیگه مشخص
کنید مثلاً ۸ کدای دیگه رو هم بگید ایندکس
بکنه خب اینجا اگه گفتم یک یعنی من دارم
یه دونه ۸ کدو ایندکس میکنم اونی که با
کارز شروع میشم ولی امکان داره شما
میتونید مثلاً تعدادشو بیشتر هم بکنید
اینو دقت داشته باشید
خب بریم یه ذره راجع به اینا صحبت کنیم تگ
چیه نومریک چیه تکست چیه فرقشون چیه اصلاً
اینا با همدیگه بذار راجع به اینا صحبت
کنیم
خب
ما بچهها دیتا تایپهای مختلفی توی این
سرچه داریم تو ایندکست میخوایم بسازیم
داریم من اسماشونو میگم بعد فرقشونم میگم
ما نومریک داریم که مشخصه دیگه برای اعداد
استفاده میشه ژو داریم
خب من اینجا بذارید بنویسم اصلا
یهزم بزرگ کنم که راحت ببینم بعد ژئو داریم برای ذخیرهسازی اطلاعات
ژئوگرافیک
وکتور داریم
خب
بعد تگ داریم تگو دیدیم دیگه
تگ بچهها ما یه تکستم داریم دیگه فرق بین
تکست و تگ چیه تکست میتونه هر متنی باشه
مثلاً مثل اینو که شما یه فرم اینپوت به
یوزرتون دادید گفتید مثلاً اسمشو وارد
کنید. خب اسم میتونه هر متنی باشه. اینجا
شما میاید موقع که میخواید ایندکس بدید
میگید از جنس تکسته. اما تگ یه سری
مقادیرو مشخص داره. مثلاً مثل رنگ مثل
جنسیت مثل اسم شهر مثل اسم کشور مثلاً یه
منو دراپ دان دادید به کاربرتون اونو
انتخاب میکنه لزوماً اجازه نداره هر چیزی
تایپ کنه. اینجا میره سراغ تک. مثلاً ما
برای کالرم رفتیم سراغ تک. چرا؟ چون رنگ
مشخصه دیگه یه لیستی از رنگا ما داریم کا
نمیتونه مثلاً بیاد از خودش مثلاً چه
میدونم بنویسه بادمجونی مثلاً مثال
میزنم. خب
پس فرق بین تکست تگ و تکست اینه که تکست
میتونه هر چیزی باشه شما مثلاً به عنوان
یک اینپوت در نظر بگیرید که کاربر میخواد
یه چیزی وارد کنه تگ مثل یه دراپ دان
میمونه خب
مثلاً بخوام توی مثال واقعی بگم مثلاً یه
سایت فروشگاه رو شما در نظر بگیرید تکست
میتونه مثلاً مثل اسم محصول باشه مثلاً
تو مشخصات محصول توصیف محصول دیسکریپشنش
یا کامنتهایی که راجع به محصول میدن این
تکسته چون نمیتونی دراپ دان بذاری براش
اما تگ مثلاً مثل رنگ محصول
یا مثلاً کشور تولید کننده محصول مثلاً
برند محصول مثلاً اینا چیزاییه که مثلا تو
میتونی یه دراپ دان بهش بدی ازش انتخاب
بکنه
و اینجا میاد سراغ تک
داکیومنت این نگاه بکنم ببینم چیزی نکتهای داره یا نه
آها برگردیم اینجا یه چیزی نشونتون بدم اینجا بچهها من زمانی که پرانتز میذارم
منظورم اینه که من قراره تکست سرچ بکنم
خب این نکتهش اینه زمانی که میام از این
براکت فروش از چی استفاده میکنم یعنی کهه
قراره توی تگ سرچ بکنم
زمانی که قراره از این از اینا بذارم اینم
فک کنم براکت حالا نمیونم این چیه یادم
رفته یعنی قراره نومریک سرچ کنم پس من این
سه تا حالتو تعمداً اینجا نوشتم برای
اینکه میخواستم نشون بدم که سه تا حالت
مختلف داره فرض کنید من اصلاً بخوام اینجا
یه دونه شرط دیگه هم اضافه کنم مثلاً
میتونم بگم که اد سایم
کالر
دو نقطه
بلو
رنگشم آبی باشه اصلاً این قرمزه این با
بلو این پایینیه رو الان باید حذف کنه
بیانو دیگه نمیاره برا ما فقط سیانو
میگردش
پس این تفاوت و نوع نگارشم به خاطر این
بود
مثلاً اگه شما بخواید یه کوری بنویسید که مثلاً چند تا رنگو بگید دیتکت بکنه مثلاً
یه دونه رنگ نیست خب اینجا میاید چیکار
میکنید؟ میاید همه رو میذارید بین
کوتیشن بچهها تو داکومنت اینو نگفتا ولی
شما این کارو بکنید یه دونه علامت اور
میذارم بینش
مثلاً اینجوری
و ادامه میدم دیگه این چند تا بود بازم
ادامه میتونم بدم و مثلاً بنویسم بقیه رم
بنویسم
توی داکومنت این کوت دبل کوتیشنو نگفته
ولی شما این کارو بکنید این کارو بکنید
یه عکس باحال بیارم. خب اینو ببینید بچهها
چند تا مثال با نومریکه. این یعنی اینکه بین سال ۱۹۵ و ۱۹۸۰
خب اون پایینیه که د تا پرانتز اضافه کرده داخلش یعنی سال بین سال ۱۹۵ تا ۱۹۸۰
خود ۱۹۵ از ۱۹۵۶ تا ۷۹ میشه یعنی ۵ و ۸۰و
در نظر نمیگیره
پایینیش یعنی چی؟
از ۱۹۵ یعنی خودشم حساب کن تا بینهایت
پایینیش چیه؟ یه منفی گذاشته این سمت
اونایی که از ۱۹۵ تا ۱۹۸۰
نیستند برعکس اولیه است دقیقاً
اینم میشه حالتهای مختلفی که شما میتونید
نومریک سرچ بکنید روی اعداد سرچ بکنید
مثالهای باحالی بود این بچهها برعکسشم
هست مثلاً میتونید بیاید بذارید اینور
منفی اینفینیتی یعنی از اول تا یه سالی
این کارم میتونید بکنید.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
با استفاده از ایندکسسازی در Redis Search، میتوان به سرعت دادهها را جستجو کرد.
تگ برای جستجوی متنی است، تکست برای جستجوی متنی با توانایی جستجوی جزئی و نومریک برای جستجوی اعداد است.
میتوان از علامت کوتیشن یا کوتیشن دوگانه برای تعیین محدوده جستجو استفاده کرد.
میتوان از مفهوم پایینی و بالایی و منفی اینفینیتی برای تعیین محدوده جستجو استفاده کرد.
آخرین بهروزرسانی محتوای متنی:
آموزش جامع و کاملاً عملی 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 را بهصورت کاربردی و پروژهمحور یاد بگیرد.