NATS Key/Value Store Walkthrough

    You can then check that JetStream is enabled by using

    Which should output something like:

    1. Connection Information:
    2. Client ID: 6
    3. Client IP: 127.0.0.1
    4. Headers Supported: true
    5. Maximum Payload: 1.0 MiB
    6. Connected URL: nats://127.0.0.1:4222
    7. Connected Address: 127.0.0.1:4222
    8. Connected Server ID: ND2XVDA4Q363JOIFKJTPZW3ZKZCANH7NJI4EJMFSSPTRXDBFG4M4C34K
    9. JetStream Account Information:
    10. Memory: 0 B of Unlimited
    11. Storage: 0 B of Unlimited
    12. Streams: 0 of Unlimited

    If you see the below instead then JetStream is not enabled

    1. JetStream Account Information:
    2. JetStream is not supported in this account

    Creating a KV bucket

    Just like you have to create streams before you can use them, you need to first create a ‘KV bucket’ using nats kv add <KV Bucket Name>:

    1. nats kv add my_kv

    Now that we have a bucket, we can use it to ‘put’ (store) values at keys:

    which should return Value1

    Getting a value

    Now that we have value stored at key “Key1” we can retrieve that value with a ‘get’:

    1. nats kv get my_kv Key1

    which should output

    1. my_kv > Key1 created @ 12 Oct 21 20:08 UTC
    2. Value1

    Watching a K/V Store

    A functionality (normally not provided by Key/Value stores) is available with the NATS KV Store is the ability to ‘watch’ a bucket (or a particular key in that bucket) and receive real-time updates to changes in the store.

    For example run nats kv watch my_kv: this will start a watcher on the bucket we have just created earlier. If you followed this walkthrough the last operation that happened on the key is that it was deleted. Because by default the KV bucket is set with a history size of one (i.e. it keeps only the last change) and the last operation on the bucket was a delete of the value associated with the key “Key1” that is the only thing that get received by the watcher:

    which should output

    1. [2021-10-12 13:15:03] DEL my_kv > Key1

    Keep that nats kv watch running and in another window do another ‘put’

    1. nats kv put my_kv Key1 Value2

      Once you are finished playing, you can easily delete the KV bucket and release the resource associated with it by using: