آنچه در این مقاله میخوانید
چگونه کلیدها را در Redis منقضی کنیم؟ راهنمای کاربردی
۱۰ شهریور ۱۴۰۴
Redis یک پایگاه داده NoSQL، متنباز و مبتنی بر حافظه است که دادهها را بهصورت ساختار کلید، مقدار ذخیره میکند. بهطور پیشفرض، تمامی کلیدها در 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 را در پروژههای واقعی بهبود دهید و از قابلیتهای قدرتمند این پایگاه داده به شکل مؤثری استفاده کنید.