برنامه نویسی

ماجراجویی: ساختمان با فروشگاه Nats JetStream KV -قسمت 4

خوش آمدید!

اینجا ما دوباره هستیم! رفتن به سریال Adventure My Adventure در فروشگاه Key/Value Value Nats JetStream!

به قسمت 4 سریال ما در کاوش در فروشگاه Nats JetStream KV خوش آمدید!

از کجا خارج شدیم؟

ما در مورد دستورات مختلف از جمله ایجاد ، دریافت ، به روزرسانی و قرار دادن استفاده کردیم. و همچنین چگونه می توانید یک تاریخچه کلیدها را بررسی کنید و اگر دوست داریم مقدار کلیدها را به تجدید نظر قدیمی برگردانیم!

بیایید دریابیم که چگونه حذف کنیم!

حذف یک کلید

خوب این یکی می تواند کمی گیج کننده باشد زیرا در اینجا چند مورد در جریان است. بیایید فقط آن را امتحان کنیم.

بیایید دوباره از ابتدا شروع کنیم ، بنابراین تمام سطل های خود را حذف کنید.

بیایید یک سطل جدید با آن ایجاد کنیم history=3 و استفاده کنید put برای افزودن برخی از مقادیر … آن را پر کنید!

$ nats kv add --history=3 Bucket1

Information for Key-Value Store Bucket Bucket1 created 2025-02-07T13:50:55-05:00

Configuration:

          Bucket Name: Bucket1
         History Kept: 3
        Values Stored: 0
           Compressed: false
   Backing Store Kind: JetStream
          Bucket Size: 0 B
  Maximum Bucket Size: unlimited
   Maximum Value Size: unlimited
          Maximum Age: unlimited
     JetStream Stream: KV_Bucket1
              Storage: File

Cluster Information:

                 Name: 
               Leader: NAHBJSFROLS2WSIXPPDBIUZXWJX6XIAKK36PTRF72ONLECU22XPPNV23

$ nats kv put Bucket1 Key1 Value1
Value1

$ nats kv put Bucket1 Key1 Value2
Value2

$ nats kv put Bucket1 Key1 Value3
Value3
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حالا بیایید حذف کنیم! ما این کار را با del فرمان

$ nats kv del Bucket1 Key1
? Delete key Bucket1 > Key1? Yes
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خوب حالا چی؟ بیایید سعی کنیم get کلید

$ nats kv get Bucket1 Key1
nats: error: nats: key not found
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خوب باحال بیایید مطمئن شویم که از بین رفته است.

$ nats kv ls Bucket1
No keys found in bucket
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خوب به نظر می رسد خوب برای تأیید چه کار دیگری می توانیم انجام دهیم؟ بیایید همه آن را امتحان کنیم.

$ nats kv ls
╭────────────────────────────────────────────────────────────────────────────╮
│                              Key-Value Buckets                             │
├─────────┬─────────────┬─────────────────────┬───────┬────────┬─────────────┤
│ Bucket  │ Description │ Created             │ Size  │ Values │ Last Update │
├─────────┼─────────────┼─────────────────────┼───────┼────────┼─────────────┤
│ Bucket1 │             │ 2025-02-07 13:50:55 │ 185 B │ 3      │ 1m17s       │
╰─────────┴─────────────┴─────────────────────┴───────┴────────┴─────────────╯
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

صبر کن 3 مقادیر ؟؟؟ چه خبر است؟

$ nats kv history Bucket1 Key1
╭──────────────────────────────────────────────────────────────────╮
│                    History for Bucket1 > Key1                    │
├──────┬──────────┬────────┬─────────────────────┬────────┬────────┤
│ Key  │ Revision │ Op     │ Created             │ Length │ Value  │
├──────┼──────────┼────────┼─────────────────────┼────────┼────────┤
│ Key1 │        2 │ PUT    │ 2025-02-07 13:51:09 │ 6      │ Value2 │
│ Key1 │        3 │ PUT    │ 2025-02-07 13:51:10 │ 6      │ Value3 │
│ Key1 │        4 │ DELETE │ 2025-02-07 13:53:52 │ 0      │        │
╰──────┴──────────┴────────┴─────────────────────┴────────┴────────╯
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

آه آنجاست! بوها DELETE op. بنابراین ما در واقع کلید را حذف کردیم.

این منطقی است زیرا ما نمی توانیم get مقدار کلیدها اگر اینجا را می بینید نیز دارای یک طول از 0 و نه ارزشبشر

خوب ، بنابراین هنوز هم در تاریخ وجود دارد همانطور که در زیر می بینیم تجدید نظر 4بشر

بنابراین ناتس حتی اگر حذف شده باشد ، این مسئله را ردیابی می کند. این نوعی مرتب و بسیار هدفمند است. همه رویدادها ردیابی می شوند. ما 3 مدخل داریم زیرا تاریخ به 3 تنظیم شده است. اگر به طور پیش فرض باشیم ، ما 1 ورودی با یک DELETE op. شما آن را دریافت می کنید این یک نشانگر حذف است که به کلید ما اضافه شده است.

خوب هنوز تاریخ وجود دارد. چه می شود اگر من نمی خواهم آن را به وجود آورد؟

ما می توانیم استفاده کنیم kv compactبشر


فشرده

بیایید دوباره ، دستورات ما را بررسی کنیم.

Subcommands:
  kv add      Adds a new KV Store Bucket
  kv put      Puts a value into a key
  kv get      Gets a value for a key
  kv create   Puts a value into a key only if the key is new or it's last operation was a delete
  kv update   Updates a key with a new value if the previous value matches the given revision
  kv del      Deletes a key or the entire bucket
  kv purge    Deletes a key from the bucket, clearing history before creating a delete marker
  kv history  Shows the full history for a key
  kv revert   Reverts a value to a previous revision using put
  kv info     View the status of a KV store
  kv watch    Watch the bucket or a specific key for updated
  kv ls       List available buckets or the keys in a bucket
  kv compact  Reclaim space used by deleted keys
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خوب ، بنابراین compact فضای استفاده شده توسط کلیدهای حذف شده را بازیابی می کند. این به چه معنی است؟

$ nats kv compact Bucket1
? Purge all historic values and audit trails for deleted keys in bucket Bucket1? Yes

$ nats kv history Bucket1 Key1
╭─────────────────────────────────────────────────────────────────╮
│                    History for Bucket1 > Key1                   │
├──────┬──────────┬────────┬─────────────────────┬────────┬───────┤
│ Key  │ Revision │ Op     │ Created             │ Length │ Value │
├──────┼──────────┼────────┼─────────────────────┼────────┼───────┤
│ Key1 │        4 │ DELETE │ 2025-02-07 13:53:52 │ 0      │       │
╰──────┴──────────┴────────┴─────────────────────┴────────┴───────╯
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

آن را بررسی کنید! تمام تاریخ از بین رفته است اما هنوز می توانیم ببینیم که کلید با یک مشخص شده است DELETE op. ما همچنین می توانیم ببینیم که این اتفاق افتاده است تجدید نظر 4 در کلید ما

بنابراین اساساً جمع و جور تمام اصلاحات قبلی را که دیگر برای هر کلید مشخص شده با یک مورد نیاز نیست ، حذف می کند DELETE op.

دستور دیگری وجود دارد که می تواند این کار را بر اساس کلیدی برای ما انجام دهد. بیایید آن را بررسی کنیم ، آن را صدا می کند purge


کلیدهای پاکسازی

Purge می تواند با حذف و حذف تاریخ در یک مرحله برای یک کلید مشخص ، این کار را آسانتر کند. می توانید دستورات بالا را بررسی کنید ، زیرا اکنون آنها را به اندازه کافی چاپ کرده ایم!

بیایید آن را امتحان کنیم ، اما اول ، اگر دوباره Key1 را اصلاح کنیم ، اکنون چه اتفاقی می افتد؟

$ nats kv put Bucket1 Key1 Value1
Value1

$ nats kv history Bucket1 Key1

╭──────────────────────────────────────────────────────────────────╮
│                    History for Bucket1 > Key1                    │
├──────┬──────────┬────────┬─────────────────────┬────────┬────────┤
│ Key  │ Revision │ Op     │ Created             │ Length │ Value  │
├──────┼──────────┼────────┼─────────────────────┼────────┼────────┤
│ Key1 │        4 │ DELETE │ 2025-02-07 13:53:52 │ 0      │        │
│ Key1 │        5 │ PUT    │ 2025-02-07 14:04:24 │ 6      │ Value1 │
╰──────┴──────────┴────────┴─────────────────────┴────────┴────────╯
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اوه قلدر! ما تجدید نظر جدیدی را به تاریخ خود اضافه کردیم که اکنون 2 است! ما پیگیری کردیم که OP اخیر یک بود PUT و ما دوباره یک ارزش داریم! ما می توانیم get آن و همه چیز! اگر می خواهید آن را امتحان کنید!

بنابراین همانطور که مشاهده می کنید ، می توانید استفاده کنید del برای حذف یک کلید ضمن حفظ تاریخ خود.

در صورت نیاز ، می توانید compact سطل برای حذف دائمی تمام تاریخچه کلیدهای حذف شده.

بیایید امتحان کنیم purge

$ nats kv purge Bucket1 Key1
? Purge key Bucket1 > Key1? Yes

$ nats kv history Bucket1 Key1
╭────────────────────────────────────────────────────────────────╮
│                   History for Bucket1 > Key1                   │
├──────┬──────────┬───────┬─────────────────────┬────────┬───────┤
│ Key  │ Revision │ Op    │ Created             │ Length │ Value │
├──────┼──────────┼───────┼─────────────────────┼────────┼───────┤
│ Key1 │        6 │ PURGE │ 2025-02-07 14:07:37 │ 0      │       │
╰──────┴──────────┴───────┴─────────────────────┴────────┴───────╯
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

قاهنگ آن را اضافه کرد PURGE op. این فقط برای نشان دادن اینکه به سادگی حذف نشده است ، تاریخ نیز حذف شد ، همه در یک فرمان! چقدر راحت!

بیایید یک چیز دیگر را طی کنیم.


سیاست حفظ سطل

بله ، کمی بیشتر برای یادگیری وجود دارد. سیاست حفظ نیز یک چیز است.

اگر سطل به حد ذخیره سازی پیکربندی شده خود برسد (به عنوان مثال ،-بایت 10 مگابایت) ، بازنگری های قدیمی تر ، از جمله نشانگرهای حذف ، ممکن است برای آزاد کردن فضای حذف شوند.

همچنین وجود دارد TTL روی سطل ها هنگام ایجاد آنها. بیایید سریع با آن واقعی اشتباه بگیریم.

پیش بروید و دوباره تمام سطل ها را حذف کنید و فقط از ابتدا شروع کنید.

بیایید از TTL پرچم

$ nats kv add --ttl=30s --history=3 Bucket1

Information for Key-Value Store Bucket Bucket1 created 2025-02-07T14:11:41-05:00

Configuration:

          Bucket Name: Bucket1
         History Kept: 3
        Values Stored: 0
           Compressed: false
   Backing Store Kind: JetStream
          Bucket Size: 0 B
  Maximum Bucket Size: unlimited
   Maximum Value Size: unlimited
          Maximum Age: 30.00s
     JetStream Stream: KV_Bucket1
              Storage: File

Cluster Information:

                 Name: 
               Leader: NAHBJSFROLS2WSIXPPDBIUZXWJX6XIAKK36PTRF72ONLECU22XPPNV23
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون برخی از کلیدها را ایجاد کنید.

$ nats kv put Bucket1 Key1 Value1
Value1
$ nats kv put Bucket1 Key1 Value2
Value2
$ nats kv put Bucket1 Key1 Value3
Value3

$ nats kv history Bucket1 Key1
╭───────────────────────────────────────────────────────────────╮
│                   History for Bucket1 > Key1                  │
├──────┬──────────┬─────┬─────────────────────┬────────┬────────┤
│ Key  │ Revision │ Op  │ Created             │ Length │ Value  │
├──────┼──────────┼─────┼─────────────────────┼────────┼────────┤
│ Key1 │        1 │ PUT │ 2025-02-07 14:12:23 │ 6      │ Value1 │
│ Key1 │        2 │ PUT │ 2025-02-07 14:12:24 │ 6      │ Value2 │
│ Key1 │        3 │ PUT │ 2025-02-07 14:12:25 │ 6      │ Value3 │
╰──────┴──────────┴─────┴─────────────────────┴────────┴────────╯
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بیایید 30 ثانیه صبر کنیم.

… حالا امتحان کن!

$ nats kv history Bucket1 Key1
nats: error: nats: key not found
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خوب وای پس فقط از بین رفته است؟

بله ، ما زمان انقضا را روی کلید قرار می دهیم. ما حتی نمی توانیم تاریخ آن را بررسی کنیم!

خوب وای این یک دلهره بود. چیزهای زیادی در آنجا وجود دارد و چیزهایی که ما آن را پوشش نداده ایم اما به یاد می آوریم. این یک سریال مقدماتی است !! (به من راحت برو!)

من به شدت توصیه می کنم اگر چیزی مشخص به نظر نمی رسید ، خودتان با آن بازی کنید. به اندازه کافی آسان است و تاکنون باید مواد غذایی را برای آن داشته باشید!


خوب ما به دستورات اساسی CLI برای فروشگاه Nats JetStream KV رفتیم. می دانم ، می دانم -شما می خواهید چیزی بسازید.

خوب من آن را دریافت کردم بیایید چیزی را در قسمت 5 بسازیم!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا