<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های amin78dev</title><link>https://virgool.ir/feed/@amin78dev</link><description>back-end software eng.&#xA;microservice, golang</description><language>fa</language><pubDate>2026-11-11 16:22:06</pubDate><image><url>https://virgool.ir/images/default-avatar.jpg</url><title>amin78dev</title><link>https://virgool.ir/@amin78dev</link></image><item><title>z-set در redis</title><link>https://virgool.ir/@amin78dev/z-set-در-redis-phgff4yctwwo</link><description>در این مقاله می خوام در مورد sorted-set تو redis حرف بزنمحالا sorted-set چیه؟در واقع sorted-set یک ساختار داده است که از پیچیدگی زمانی o (log n) پیروی میکنه که باعث میشه در مقیاس های بالا بسیار کارآمد باشه بخوام واضح تر بگم اینه که حتی با افزایش تعداد اعضا، زمان دسترسی به داده‌ها افزایش پیدا نمیکنه و نتیحه سریع تر براتون برگشت داده میشه (n تعداد اعضا)اصلا یادم رفت ساختارشو بگم اصلا برای چیه؟بیشتر برای رتبده بندی استفاده میشه یعنی در واقع ساختارش اینه که یک score , member از شما میگیرهحالا به این دقت کنید  من می  خوام یک سری دانش آموزان رو بر اساس نمره مرتب کنم:// comment  اضافه کردن کاربران همراه با امتیاز&#xA;ZADD leaderboard 10 &#34;reza&#34;&#xA;ZADD leaderboard 15 &#34;samaneh&#34;&#xA;ZADD leaderboard 12 &#34;ali&#34;&#xA;ZADD leaderboard 20 &#34;mehdi&#34;&#xA;// سورت کردن صعودی بر اساس امتیاز&#xA;ZRANGE leaderboard 0 -1 WITHSCORES&#xA;// سورت کردن بر اساس نزولی&#xA;ZREVRANGE leaderboard 0 -1 WITHSCORESدر نظر بگیرید index ها تو این ساختار داده براساس رتبه به روز میشن و با حذف و اضافه بهم نمیریزه و سریع ترین شکل ممکن این عملیات انجام میشهحالا یک مثال کاربردی بزنیم:یک سیستمی دارید که می خواهید کاربران رو بر اساس تایم در خواستشون برای جوین شده به یک گروهی مرتبط کنید شما باید کاربرانی که قبل از در خواست جدید عضو گروه کنید:ZADD user_requests 1627905600 &#34;user1&#34;&#xA;ZADD user_requests 1627912800 &#34;user2&#34;&#xA;ZADD user_requests 1627920000 &#34;user3&#34;&#xA;ZADD user_requests 1627927200 &#34;user4&#34;با این دستورات کاربران را با زمان درخواستشان (تایم‌استمپ یونیکس) به Sorted Set user_requests اضافه می‌کنیم و با دستور زیر سورت میکنیم:ZRANGE user_requests 0 -1 WITHSCORES حالا چرا نباید خودمون سورت کنیم:در صورت سورت شدن توسط ما از پیچیدگی زمانی o(n log n) پیروی میکنه و باعث میشه برای اسکیل بالا سرعت و پرفورمنس خوبی نگیریم.مثال کد golang که از پیچیدگی زمانی بالا استفاده میکنه o (n log n) :https://go.dev/play/p/QgIyEkQVWoD</description><category>amin78dev</category><author>amin78dev</author><pubDate>Sun, 11 Aug 2024 17:37:42 +0330</pubDate></item><item><title>queue group در nats</title><link>https://virgool.ir/@amin78dev/nats-در-queue-group-mxquqpszzjzr</link><description>nats (Queue Groups)اولین مقاله من در مورد nats هستتو nats ما چیزی به اسم queue group داریم حالا این queue group چیه؟در واقع این قابلیت رو به شما میده چندین subscriber عضو یک گروه بشن برای consume کردن پیام های یک subjectحالا این چه فایده ای  داره؟این کار باعث میشه nats به عنوان یک load balancer عمل کنه در واقع پیام های ایجاد شده به یکی از این subsciber ها برسهحالا شما فکر میکنید کجا ها این مورد می تونه استفاده بشه؟در نظر بگیرید یه سیستم push notification می خواهید ایجاد کنید برای افزایش قابلیت اطمینان و مقیاس‌پذیری، می‌خواهید از چندین سرویس‌دهنده (Worker) برای پردازش این نوتیفیکیشن‌ها استفاده کنید. اینجا است که Queue Group به کارتون میاد.شما در queue group می تونید چندین subscriber برای یک group  تعریف کنید که به یک subject خاص گوش میدن و وقتی چندین پیام ارسال میشه nats به عنوان load balancer پیام رو بین این subscriber ها پخش میکنه و از پردازش یک پیام توسط چندین subscriber جلوگیری میکنه.</description><category>amin78dev</category><author>amin78dev</author><pubDate>Sat, 10 Aug 2024 10:51:57 +0330</pubDate></item></channel></rss>