تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

چگونه کلیدها را در Redis منقضی کنیم؟ راهنمای کاربردی


۱۰ شهریور ۱۴۰۴

Redis یک پایگاه داده NoSQL، متن‌باز و مبتنی بر حافظه است که داده‌ها را به‌صورت ساختار کلید، مقدار ذخیره می‌کند. به‌طور پیش‌فرض، تمامی کلیدها در Redis ماندگار هستند؛ یعنی تا زمانی که به‌صورت دستی حذف نشوند، در پایگاه داده باقی می‌مانند و حذف خودکار برای آن‌ها تعریف نشده است.

با این حال، در بسیاری از کاربردها مانند ذخیره‌سازی توکن‌ها احراز هویت، اطلاعات کش شده یا داد‌های موقتی نیاز دارید کلیدها فقط برای مدت‌زمان مشخصی فعال باشند و سپس به‌صورت خودکار از بین بروند. در چنین شرایطی، می‌توانید کلیدها را به‌صورت موقتی تعریف کرده و برای آن‌ها زمان انقضا تعیین کنید. این قابلیت به شما کمک می‌کند تا مدیریت حافظه و کارایی Redis را بهینه‌تر انجام دهید.

در ادامه خواهید خواند:

  • پیش نیاز
  • تنظیم زمان انقضا برای کلیدها
  • بررسی زمان انقضای کلید در Redis
  • تبدیل کلیدهای موقتی به دائمی
  • سوالات متداول
  • جمع بندی
کلیدها در Redis

پیش نیاز

این مطلب به صورت یک چیت‌شیت (Cheat Sheet) یا برگه راهنمای سریع نوشته شده و هر بخش آن مثال‌های مستقلی دارد. بنابراین می‌توانید بسته به نیاز خود، مستقیم به بخشی بروید که برای انجام کارتان مفید است.

تمامی دستورات این راهنما روی یک سرور Ubuntu 22.04 اجرا شده که Redis نسخه 6.0.16 روی آن نصب است. دستورات این آموزش با استفاده از ابزار خط فرمان Redis به نام redis-cli اجرا شده‌اند. در صورتی که از ابزار دیگر مانند Redli استفاده می‌کنید، ممکن است خروجی‌ها کمی متفاوت باشند.

همچنین به‌جای نصب Redis روی سیستم‌تان، می‌توانید یک دیتابیس Redis مدیریت‌شده تهیه کنید و دستورات را روی آن اجرا نمایید. البته توجه داشته باشید که بسته به سطح دسترسی که ارائه‌دهنده سرویس در اختیار شما می‌گذارد، برخی دستورات ممکن است دقیقا همان‌طور که در این آموزش آمده عمل نکنند.

Redis چیست؟
Redis 

تنظیم زمان انقضا برای کلیدها

می‌توانید با استفاده از دستور expire برای یک کلید موجود، زمان انقضا تعریف کنید. این دستور دو آرگومان دریافت می‌کند: نام کلید و مدت‌زمان باقی‌مانده تا انقضا (بر حسب ثانیه). برای درک بهتر، دو دستور زیر را اجرا کنید. دستور اول یک کلید متنی با نام key_melon و مقدار "cantaloupe" ایجاد می‌کند.

set key_melon "cantaloupe"

دستور دوم، کلید را طوری تنظیم می‌کند که پس از 450 ثانیه منقضی شود:

expire key_melon 450

اگر تنظیم زمان انقضا با موفقیت انجام شود، دستور expire برابر با (integer) 1 خواهد بود. در صورت شکست در تنظیم زمان انقضا، خروجی برابر با (integer) 0 خواهد بود.

راه دیگر این است که انقضا را به‌جای مدت زمان، برای یک زمان مشخص تنظیم کنید. در این حالت باید از دستور expire استفاده کنید این دستور به جای تعداد ثانیه، یک زمان یونیکس (Unix timestamp) به عنوان آرگومان دریافت می‌کند.

زمان یونیکس برابر است با تعداد ثانیه‌هایی که از تاریخ 1 ژانویه 1970، ساعت 00:00:00 UTC گذشته است. ابزارهای آنلاین مختلفی مانند EpochConverter یا UnixTimestamp.com وجود دارند که می‌توانید با کمک آن‌ها، زمان موردنظر خود را به timestamp تبدیل کنید.

برای مثال اگر بخواهید کلید key_melon در ساعت 20:30 به وقت GMT در تاریخ 1 مه 2025 منقضی شود (که معادل timestamp عددی 1746131400 است)، از دستور زیر استفاده می‌شود.

expireat key_melon 1746131400

توجه داشته باشید اگر زمانی که به expire می‌دهید، در گذشته باشد، Redis کلید را بلافاصله حذف خواهد کرد.

با هاست ابری Redis لیارا، ذخیره‌سازی داده‌های موقت رو با سرعت و عملکرد بالا انجام بده.
✅ نصب آنی و خودکار ✅ منابع اختصاصی ✅ مناسب کش، صف و Session
خرید و راه‌اندازی دیتابیس Redis

بررسی زمان انقضای کلید در Redis

هر زمان که برای یک کلید زمان انقضا تعیین کرده باشید، می‌توانید با استفاده از دستور ttl (مخفف time to live) مدت زمان باقی‌مانده تا انقضا را بر حسب ثانیه بررسی کنید.

ttl key_melon
Output
(integer) 79247184

اگر به اطلاعات دقیق‌تری نیاز دارید، می‌توانید از دستور pttl استفاده کنید که مقدار باقی‌مانده تا انقضا را بر حسب میلی‌ثانیه برمی‌گرداند.

pttl key_melon
Output
(integer) 79247156730

دستورهای ttl و pttl در دو حالت مقدارهای خاصی برمی‌گردانند.

  • اگر کلید به انقضا تنظیم نشده باشد، خروجی برابر با (integer) -1 خواهد بود.
  • اگر کلید اصلا وجود نداشته باشد، خروجی برابر با (integer) -2 خواهد بود.
چگونه هش‌ها را در Redis مدیریت کنیم؟
هش‌ها را در Redis

تبدیل کلیدهای موقتی به دائمی

اگر برای یک کلید زمان انقضا تنظیم شده باشد، اجرای هر دستوری که مقدار آن کلید را بازنویسی کند مانند set یا gerset باعث می‌شود زمان انقضای کلید حذف شود.

برای حذف دستی زمان انقضای کلید (و دائمی کردن آن)، می‌توانید از دستور persist استفاده کنید.

persist key_melon

اگر این دستور با موفقیت اجرا شود، خروجی آن برابر با (integer) 1 خواهد بود، که نشان می‌دهد کلید دیگر منقضی نخواهد شد.

با سرور ابری Ubuntu لیارا، پروژه‌هات رو روی یک زیرساخت پایدار و امن اجرا کن.
✅ دسترسی Root کامل ✅ منابع اختصاصی ✅ پشتیبانی از نسخه‌های مختلف اوبونتو
خرید و راه‌اندازی سرور Ubuntu

سوالات متداول

شاید این سؤالات برای شما هم پیش آمده باشد. در ادامه، به آن‌ها پاسخ داده‌ایم تا ابهامی باقی نماند.

Redis چیست؟

Redis یک پایگاه‌داده NoSQL و متن‌باز است که داده‌ها را به‌صورت in-memory و با ساختار کلید-مقدار ذخیره می‌کند.

کلیدها در Redis یعنی چه؟

در Redis، داده‌ها با استفاده از کلیدهایی یکتا نگهداری می‌شوند. هر کلید به یک مقدار مرتبط است که می‌تواند انواع مختلفی از داده‌ها را در بر بگیرد، مانند رشته، لیست، هش و غیره.

چگونه می‌توانم برای یک کلید در Redis زمان انقضا تنظیم کنم؟

با استفاده از دستور expire یا expireat می‌توانید برای کلیدها زمان انقضا مشخص کنید.

از کجا بفهمم یک کلید در Redis کی منقضی می‌شود؟

با دستورات ttl یا pttl می‌توانید زمان باقی‌مانده تا انقضای یک کلید را به‌دست آورید.

اگر یک کلید را دوباره مقداردهی کنم، انقضای آن چه می‌شود؟

هرگونه بازنویسی مقدار کلید (مثلاً با set) باعث حذف زمان انقضای قبلی می‌شود.

چطور می‌توانم انقضای یک کلید را حذف کنم و آن را دائمی نگه دارم؟

با استفاده از دستور persist می‌توانید انقضای کلید را حذف کرده و آن را به حالت دائمی برگردانید.

چه تفاوتی بین expire و expireat وجود دارد؟

دستور expire زمان انقضا را بر اساس تعداد ثانیه تنظیم می‌کند، در حالی که expireat از یک timestamp مشخص استفاده می‌کند.

آیا می‌توان انقضای یک کلید را تغییر داد؟

بله، با اجرای مجدد دستور expire یا expireat برای همان کلید می‌توانید زمان انقضای آن را به‌روزرسانی کنید.

آیا می‌توان کلیدی را بدون انقضا در Redis ایجاد کرد؟

بله، کلیدهایی که با دستور set ایجاد می‌شوند به‌طور پیش‌فرض بدون انقضا هستند مگر اینکه به‌صراحت برایشان انقضا تعریف شود.

Redis برای چه نوع پروژه‌هایی مناسب است؟

Redis برای سیستم‌هایی که نیاز به سرعت بالا، کش داده، مدیریت نشست کاربران (session)، صف‌بندی درخواست‌ها و تحلیل لحظه‌ای دارند، بسیار مناسب است.

نصب و راه اندازی Redis در ویندوز
نصب Redis

جمع بندی

این راهنما با معرفی و توضیح دستورات اصلی Redis، به شما کمک می‌کند تا مدیریت زمان انقضا و ماندگاری کلیدها را به شکل ساده و کاربردی یاد بگیرید. با به‌کارگیری این دستورات، می‌توانید داده‌های موقتی را بهینه کنترل کنید، حافظه را مدیریت کنید و از پاکسازی خودکار داده‌های غیرضروری بهره‌مند شوید. این دانش به شما امکان می‌دهد عملکرد سیستم‌های مبتنی بر Redis را در پروژه‌های واقعی بهبود دهید و از قابلیت‌های قدرتمند این پایگاه داده به شکل مؤثری استفاده کنید.