مقدمه
در این بخش، به بررسی یک سناریوی عملی برای استفاده از ساختار داده Sorted Set در ردیس میپردازیم. فرض کنید میخواهید اطلاعات کاربران و تعداد دنبالکنندگان آنها را مدیریت کرده و بر اساس تعداد دنبالکنندگان رتبهبندی کنید.
سناریوی کسبوکار: رتبهبندی کاربران بر اساس دنبالکنندگان
دادههای نمونه ما به شرح زیر است:
- Adam: 10 دنبالکننده
- Scott: 20 دنبالکننده
- Amy: 30 دنبالکننده
اگر تنها نام کاربران را داشتیم، استفاده از یک Set معمولی کافی بود. اما از آنجا که یک داده عددی (تعداد دنبالکنندگان) نیز به هر کاربر مرتبط است، Sorted Set گزینه ایدهآلی است. در این ساختار، تعداد دنبالکنندگان به عنوان Score و نام کاربران به عنوان Member در نظر گرفته میشوند.
افزودن داده به Sorted Set
برای افزودن داده از دستور ZADD استفاده میکنیم. ساختار این دستور به صورت زیر است:
ZADD key [OPTIONS] score1 member1 [score2 member2 ...]
نکته مهم: ابتدا Score (امتیاز) و سپس Member (عضو) ذکر میشود.
مثال:
ZADD users:followers 10 Adam 20 Scott 30 Amy
خروجی: (3) → نشان میدهد سه عضو با موفقیت افزوده شدهاند.
گزینههای دستور ZADD
XX: فقط اعضای موجود را بهروزرسانی میکند (عضو جدیدی اضافه نمیکند).NX: فقط اعضای جدید را اضافه میکند (اعضای موجود بهروزرسانی نمیشوند).LT: فقط در صورتی عضو موجود را بهروزرسانی میکند که امتیاز جدید کمتر از امتیاز فعلی باشد.GT: فقط در صورتی عضو موجود را بهروزرسانی میکند که امتیاز جدید بیشتر از امتیاز فعلی باشد.
بازیابی داده از Sorted Set
برای دریافت تمام اعضا (بدون امتیاز) از دستور ZRANGE استفاده میکنیم:
ZRANGE users:followers 0 -1
خروجی:
1) "Adam"
2) "Scott"
3) "Amy"
دریافت اعضا به همراه امتیازها
برای دریافت هم اعضا و هم امتیازهای مربوطه، از گزینه WITHSCORES استفاده میکنیم:
ZRANGE users:followers 0 -1 WITHSCORES
خروجی:
1) "Adam"
2) "10"
3) "Scott"
4) "20"
5) "Amy"
6) "30"
نتیجهگیری
با استفاده از دو دستور اصلی ZADD برای افزودن داده و ZRANGE برای بازیابی آن، میتوانید بهراحتی از قابلیتهای قدرتمند Sorted Set در ردیس بهره ببرید. این ساختار داده، بهویژه برای سیستمهای رتبهبندی و leaderboardها بسیار کارآمد است.