NAME

EV::Nats::KV - Key-Value store API for NATS JetStream

SYNOPSIS

use EV::Nats;
use EV::Nats::JetStream;
use EV::Nats::KV;

my $nats = EV::Nats->new(host => '127.0.0.1');
my $js = EV::Nats::JetStream->new(nats => $nats);
my $kv = EV::Nats::KV->new(js => $js, bucket => 'config');

# Create bucket (stream)
$kv->create_bucket({}, sub { ... });

# Put / Get / Delete
$kv->put('app.setting', 'value', sub { ... });
$kv->get('app.setting', sub { my ($val, $err) = @_; ... });
$kv->delete('app.setting', sub { ... });

# Watch for changes
my $sid = $kv->watch('app.>', sub {
    my ($key, $value, $op) = @_;
    print "$op: $key = $value\n";
});

# List keys
$kv->keys(sub { my ($keys, $err) = @_; ... });

METHODS

new(js => $js, bucket => $name, [timeout => $ms])

get($key, $cb)

put($key, $value, $cb)

create($key, $value, $cb) - put only if key doesn't exist

delete($key, [$cb])

purge($key, [$cb]) - remove all revisions

keys($cb) - list all keys

watch($pattern, $cb) - watch for changes

create_bucket(\%opts, $cb) - create underlying stream

delete_bucket($cb)

status($cb)