چگونه هشها را در Redis مدیریت کنیم؟
۱۸ اسفند ۱۴۰۳
Redis یک پایگاه داده کلید-مقدار منبع باز و مبتنی بر حافظه است. هش در Redis یک نوع داده است که نمایانگر یک نگاشت بین یک فیلد رشتهای و یک مقدار رشتهای میباشد. هشها میتوانند چندین جفت فیلد-مقدار را در خود نگهداری کنند و طوری طراحی شدهاند که فضای کمی را اشغال کنند، که این ویژگی آنها را برای نمایندگی اشیاء دادهای ایدهآل میسازد. برای مثال، یک هش ممکن است نمایانگر یک مشتری باشد و فیلدهایی مثل نام، آدرس، ایمیل یا شناسه مشتری را شامل شود.
این مقاله به شما نحوه مدیریت هشها در Redis را آموزش خواهد داد، از ایجاد آنها گرفته تا بازیابی و حذف دادههای موجود در هشها.
این راهنما به صورت یک برگه تقلب (cheat sheet) نوشته شده است که شامل مثالهای مستقل و کاربردی است. ما شما را تشویق میکنیم تا به هر بخشی که مرتبط با وظیفهای است که میخواهید انجام دهید، مراجعه کنید.
دستورات نشان داده شده در این راهنما بر روی یک سرور Ubuntu 22.04 با نسخه Redis 6.0.16 آزمایش شدهاند. نحوه عملکرد این دستورات با استفاده از redis-cli
(رابط خط فرمان Redis) نشان داده شده است. اگر از یک رابط Redis دیگر مانند Redli استفاده میکنید، ممکن است خروجی دقیق برخی دستورات با آنچه در این راهنما نشان داده شده، متفاوت باشد.
همچنین، شما میتوانید یک نمونه پایگاه داده Redis مدیریتشده را برای آزمایش این دستورات راهاندازی کنید، اما توجه داشته باشید که بسته به سطح دسترسی که توسط ارائهدهنده پایگاه داده به شما داده میشود، برخی از دستورات ممکن است به همان شیوهای که در این راهنما توضیح داده شدهاند عمل نکنند.
در ادامه خواهید خواند:
- ایجاد هش ها
- دریافت اطلاعات از هش ها
- حذف فیلد ها از هش ها
- سوالات متداول
- جمع بندی
ایجاد هش ها
برای ایجاد یک هش، دستور hest
را اجرا کنید. این دستور نام کلید هش، رشته فیلد و رشته مقدار مربوط را به عنوان آرگومان میپذیرد.
hset poet:Verlaine nationality French
نکته: در این مثال و مثال های بعدی، poet:Verlaine
کلید هش است. برای خواناتر شدن کلیدها و فیلدها، معمولاً از نقطهها، خط تیرهها و دو نقطهها استفاده میشود. مهم است که اطمینان حاصل کنید کلیدهای شما یک فرمت ثابت و قابل فهم برای انسان داشته باشند.

دستور hset
مقدار (عدد صحیح) 1 را باز میگرداند اگر فیلد مشخصشده یک فیلد جدید باشد و مقدار به درستی تنظیم شده باشد.
Output
(integer) 1
اگر شما فیلد، مقدار یا نام کلید هش را وارد نکرده باشید، دستور hest
یک خطا برمیگرداند.
همچنین توجه داشته باشید که دستور hest
محتویات هش را در صورتی که قبلا وحود داشته باشد، بازنویسی میکند.
hset poet:Verlaine nationality Francais
اگر فیلد قبلاً وجود داشته باشد و مقدار آن به درستی بهروزرسانی شود، دستور hset
مقدار (عدد صحیح) 0 را باز میگرداند.
Output
(integer) 0
برای اضافه کردن فیلدها به هشها، میتوانید از دستور hsetnx
استفاده کنید، اما این دستور تنها در صورتی کار میکند که فیلد هنوز وجود نداشته باشد. اگر فیلد مشخصشده قبلاً وجود داشته باشد، hsetnx
هیچگونه تأثیری نخواهد داشت و مقدار (عدد صحیح) 0 را باز میگرداند.
hsetnx poet:Verlaine nationality French
Output
(integer) 0
برای تنظیم چند جفت فیلد/مقدار به یک هش، از دستور hmset
استفاده کنید که پس از آن فیلد/مقدارهای مربوطه را وارد میکنید.
hmset poet:Verlaine born 1844 died 1896 genre Decadent
اگر دستور hmset
موفقیتآمیز باشد، مقدار “OK” باز میگرداند.
بیشتر بخوانید: Redis چیست؟
دریافت اطلاعات از هش ها
برای بررسی اینکه آیا یک فیلد در یک هش خاص وجود دارد یا خیر، میتوانید از دستور hexists
استفاده کنید.
hexists poet:Verlaine nationality
دستور hexists
مقدار (عدد صحیح) 1 را برمیگرداند اگر فیلد وجود داشته باشد و مقدار (عدد صحیح) 0 را اگر وحود نداشته باشد.
برای دریافت مقدار یک فیلد، دستور hget
را با کلید هش و فیلدی که میخواهید مقدار آن را دریافت کنید، اجرا کنید.
hget poet:Verlaine nationality
Output
"Francais"
دستور hmget
از همان ساختار استفاده میکند، اما میتواند چندین فیلد را بازگرداند.
hmget poet:Verlaine born died
Output
1) "1844"
2) "1896"
اگر هش مشخص شده برای دستور hget
یاhmget
وجود نداشته باشد هر دو دستور مقدار (nill)
را باز میگردانند.
hmget poet:Dickinson born died
Output
1) (nil)
2) (nil)
برای دریافت لیستی از تمام فیلد های موجود در یک هش خاص، دستور hkeys
را اجرا کنید.
hkeys poet:Verlaine
Output
1) "nationality"
2) "born"
3) "died"
4) "genre"
برای دریافت لیستی از مقادیر موجود در یک هش، دستور hvals
را اجرا کنید.
hvals poet:Verlaine
Output
1) "French"
2) "1844"
3) "1896"
4) "Decadent"
برای دریافت لیستی از همه فیلد ها و مقادیر مربوط در یک هش، دستور hgetall
را اجرا کنید.
hgetall poet:Verlaine
Output
1) "nationality"
2) "French"
3) "born"
4) "1844"
5) "died"
6) "1896"
7) "genre"
8) "Decadent"
برای پیدا کردن تعداد فیلد های موجود در یک هش، میتوانید از دستور hlen
استفاده کنید که مخفف طول هش است.
hlen poet:Verlaine
Output
(integer) 4
برای پیدا کردن طول رشته مقدار مرتبط با یک فیلد، دستور hstrlen
که مخفف طول رشته هش است استفاده کنید.
hstrlen poet:Verlaine nationality
Output
(integer) 8
دستور hlen
مقدار (عدد صحیح) 0 را باز میگرداند در صورتی که هش وجود نداشته باشد.
با پایگاه داده Redis لیارا، دادههای خود را با سرعت فوقالعاده و امنیت بالا پردازش کنید.
✅ عملکرد بهینه ✅ دسترسی سریع ✅ مقیاسپذیری بالا
خرید دیتابیس Redis لیارا
حذف فیلد ها از هش ها
برای حذف یک فیلد از یک هش، دستور hdel
را اجرا کنید. دستور hdel
میتواند چندین فیلد را به عنوان آرگومان بپذیرد و یک عدد صحیح را باز میگرداند که نشان میدهد چند فیلد از هش حذف شدهاند.
hdel poet:Verlaine born died
(integer) 2
اگر فیلدی که به دستور hdel
میدهید وجود نداشته باشد، این فیلد نادیده گرفته میشود، اما هر فیلد دیگری که وجود داشته باشد حذف خواهد شد.
سوالات متداول
در ادامه برخی از سوالات متداول کاربران بررسی و پاسخ داده شده است.
1. هش چیست؟
هش در Redis یک نوع داده است که نمایانگر یک نگاشت (mapping) بین یک رشته به عنوان فیلد و یک رشته به عنوان مقدار است. این نوع داده میتواند چندین فیلد و مقدار را در خود نگه دارد و به دلیل استفاده بهینه از فضا، برای ذخیرهسازی دادههای مختلف مانند اطلاعات کاربران یا پیکربندیها مناسب است.
2. Redis چیست؟
Redis یک پایگاه داده کلید-مقدار متنباز است که در حافظه نگهداری میشود و برای ذخیرهسازی دادهها با سرعت بالا طراحی شده است. Redis از انواع مختلف دادهها مانند رشتهها، لیستها، مجموعهها و هشها پشتیبانی میکند و میتواند به عنوان یک سیستم کش، صف پیام یا پایگاه داده استفاده شود.
3. چگونه میتوان یک هش را در Redis ایجاد کرد؟
برای ایجاد یک هش در Redis از دستور hset
استفاده میشود. شما باید نام کلید هش، فیلد و مقدار آن را وارد کنید. این دستور فیلد را به هش اضافه میکند یا در صورت وجود، آن را بهروزرسانی میکند.
4. دستور hget در Redis چیست؟
دستور hget
برای بازیابی مقدار یک فیلد خاص از یک هش در Redis استفاده میشود. شما باید کلید هش و نام فیلد مورد نظر را وارد کنید تا مقدار مربوطه بازیابی شود.
5. چگونه میتوان تعداد فیلدهای یک هش را پیدا کرد؟
برای پیدا کردن تعداد فیلدهای موجود در یک هش در Redis از دستور hlen
استفاده میشود. این دستور تعداد فیلدهای هش را به صورت عدد صحیح برمیگرداند.
6. دستور hdel در Redis چیست؟
دستور hdel
برای حذف فیلدها از یک هش استفاده میشود. این دستور میتواند چندین فیلد را حذف کند و تعداد فیلدهای حذفشده را به عنوان خروجی باز میگرداند.
7. چگونه میتوان تمام فیلدها و مقادیر یک هش را مشاهده کرد؟
برای مشاهده تمام فیلدها و مقادیر یک هش در Redis از دستور hgetall
استفاده میشود. این دستور تمام فیلدها و مقادیر مربوطه را به صورت جفتجفت برمیگرداند.
8. تفاوت بین دستور hget و hmget در Redis چیست؟
دستور hget
برای دریافت مقدار یک فیلد خاص از یک هش استفاده میشود، در حالی که دستور hmget
به شما این امکان را میدهد که مقادیر چندین فیلد را از یک هش به طور همزمان دریافت کنید.
9. دستور hexists در Redis چیست؟
دستور hexists
برای بررسی وجود یک فیلد خاص در یک هش استفاده میشود. این دستور 1 را برمیگرداند اگر فیلد موجود باشد و 0 را در صورتی که فیلد مورد نظر در هش وجود نداشته باشد.
10. چگونه میتوان از Redis برای ذخیرهسازی دادهها استفاده کرد؟
Redis به عنوان یک پایگاه داده کلید-مقدار در حافظه عمل میکند و میتواند برای ذخیرهسازی دادهها با سرعت بالا مورد استفاده قرار گیرد. شما میتوانید دادهها را به انواع مختلفی مانند رشتهها، هشها، لیستها و مجموعهها ذخیره کنید و آنها را به سرعت بازیابی کنید. Redis برای کشینگ و صفهای پیام نیز مناسب است.
همینطور بخوانید: نصب و راه اندازی Redis در ویندوز

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