Jack is a proof-of-concept concurrent key-value server. It supports get, set, publish, subscribe, and delete
The underlying data structure is MetaStore, which is an abstraction over a string map that divides the key-space into buckets for finer lock resolution.
You can use the Go tool to install the library and dependencies:
export GOPATH=<where you store your Go code>
go get -u github.com/tristanwietsma/jack
The project currently ships with the server, jackd, and a command line interface, jack-cli. Since the Go tool doesn't like multiple build targets in the same project, you need to build them separately:
cd $GOPATH/src/github.com/tristanwietsma/jack
make
The 'make' will build both jackd and jack-cli, as well as move them to $GOCODE/bin.
To start the server, run jackd:
$ jackd
2013/10/02 15:26:25 created storage with 1000 buckets
2013/10/02 15:26:25 server started on port 2000
...
To start the command-line tool:
jack > help
GET key [key ...]
SET key value
DEL key [key ...]
PUB key value
SUB key [key ...]
QUIT
$ jack-cli
jack> set key123 val567
jack> 1
jack> get key123
jack> key123 := val567
jack> pub key123 765lav
jack> 1
jack> sub key123
...
The commands are all three characters and not case sensitive. The following should be self-explanatory:
jack> set <key> <value>
jack> get <key> [<key> ...] // supports multiple keys
jack> pub <key> <value>
jack> del <key> [<key> ...] // supports multiple keys
jack> sub <key> [<key> ...] // supports multiple keys