Initial release of nats-key-value, a Python client for the NATS Key-Value
store, built on nats-jetstream.
Features
- Buckets - Create, update, and delete key-value buckets
- Keys - Put, get, create, update, delete, and purge values
- Optimistic concurrency - Compare-and-swap updates via revision numbers
- History - Per-key revision history
- TTL - Per-key time-to-live
- Watches - Subscribe to changes with key pattern filters
- Listing - Enumerate keys and inspect bucket statuses
Requirements
- Python 3.13+
- NATS server with JetStream enabled
Installation
pip install nats-key-valueQuick Start
import asyncio
from nats.client import connect
from nats.jetstream import new as new_jetstream
from nats.key_value import KeyValueConfig, create_or_update_key_value
async def main():
client = await connect("nats://localhost:4222")
js = new_jetstream(client)
kv = await create_or_update_key_value(js, KeyValueConfig(bucket="config"))
await kv.put("greeting", b"Hello World!")
entry = await kv.get("greeting")
print(f"{entry.key} = {entry.value.decode()} (revision {entry.revision})")
await kv.delete("greeting")
await client.close()
if __name__ == "__main__":
asyncio.run(main())